如何解决如何使此SQL查询工作?我希望在查询中插入一个元组
这是对我有用的原始SQL查询
sql_text = """select * from (
SELECT pr.CLOSING_DATE,'M' + CAST(year(pr.FIRST_DAY_DEL)*12+month(pr.FIRST_DAY_DEL) - year(pr.CLOSING_DATE)*12-month(pr.CLOSING_DATE) as varchar(2)) as relative_product,pr.SETTLEMENT_PRICE as value
FROM COMMON.dbo.MDC_FUTURES_V pr,COMMON.dbo.MDC_CAT_V d
WHERE pr.MDC_ID = d.MDC_ID AND pr.FIRST_DAY_DEL<=pr.CLOSING_DATE + 1000
AND pr.MDC_ID IN ('10006968')
AND pr.PERIOD='Monthly'
) as data
PIVOT (AVG(VALUE) FOR relative_product IN (
[M1],[M2],[M3],[M4],[M5],[M6],[M7],[M8]
)) AS pvtL
ORDER BY CLOSING_DATE DESC"""
data = pd.read_sql(sql_text,con)
由于我将来需要几个月的时间,因此我尝试替换([M1],[M2],[M3],[M4],[M5],[M6],[M7],[M8 ])和一个元组。我写在下面
lst_m36=[]
for i in range(1,9):
lst_m36.append(f"[M{i}]")
tple36=tuple(lst_m36)
但是,当我尝试在SQL查询中插入元组tple36时,我尝试了不同的“”()位置,但是它永远无法正常工作。
sql_text = """select * from (
SELECT pr.CLOSING_DATE,COMMON.dbo.MDC_CAT_V d
WHERE pr.MDC_ID = d.MDC_ID AND pr.FIRST_DAY_DEL<=pr.CLOSING_DATE + 1000
AND pr.MDC_ID IN ('10006968')
AND pr.PERIOD='Monthly'
) as data
PIVOT (AVG(VALUE) FOR relative_product IN (tple36)) AS pvtL
ORDER BY CLOSING_DATE DESC"""
这是与上一个查询匹配的错误消息
DatabaseError:在SQL上执行失败:从*中选择* SELECT pr.CLOSING_DATE, 'M'+ CAST(year(pr.FIRST_DAY_DEL)* 12 + month(pr.FIRST_DAY_DEL)-year(pr.CLOSING_DATE)* 12-month(pr.CLOSING_DATE)as varchar(2))作为relative_product, pr.SETTLEMENT_PRICE作为价值 从COMMON.dbo.MDC_FUTURES_V pr,COMMON.dbo.MDC_CAT_V d 其中pr.MDC_ID = d.MDC_ID和pr.FIRST_DAY_DEL
('08S01','[08S01] [Microsoft] [ODBC SQL Server驱动程序]通信链接失败(0)(SQLExecDirectW)')
无法回滚
任何人都可以提供有效的SQL查询吗?
解决方法
查询步骤时请勿使用数据透视。获取结果并使用pandas包获取数据透视。我认为它将变得更容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。