如何根据单独列中的月份和年份参数对 DB2 结果进行排序
Posted
技术标签:
【中文标题】如何根据单独列中的月份和年份参数对 DB2 结果进行排序【英文标题】:How can I sort DB2 results based on month and year parameter from separate column 【发布时间】:2017-06-28 13:31:52 【问题描述】:我正在使用 DB2。
我有一个查询以以下格式返回特定日期:yyyy-mm-dd
SELECT DATE FROM ABC.DTS
然后我设计了另一个查询,它应该返回与上面返回的日期匹配的结果
SELECT COUNT(*)
FROM ABC.ATY
WHERE ID between 1 and 1000000000
AND MONTH(PRS) = MONTH(from DTS)
AND YEAR(PRS) = YEAR(from DTS)
AND CKPYE = ' '
;
当我运行第二个查询时出现错误:ILLEGAL SYMBOL "MONTH". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: XMLELEMENTXMLPI. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.19.56.
如何返回与第一个查询返回的日期匹配的结果?
我需要另一种路线/策略来代替我目前正在尝试的路线/策略吗?
非常感谢。
【问题讨论】:
你不应该加入表ABC.DTS
吗?另外,PRS
的数据类型是什么?
我想我需要某种加入,你能具体评论一下哪种类型吗?并且 PRS 的类型是日期时间
【参考方案1】:
看看这是否适合你:
SELECT COUNT(*)
FROM ABC.ATY
JOIN ABC.DTS ON MONTH(PRS) = MONTH(Date) AND YEAR(PRS) = YEAR(DATE)
WHERE ID between 1 and 1000000000
AND CKPYE = ' '
;
【讨论】:
谢谢,但是没有用。收到此错误:日期在使用它的上下文中无效。 SQLCODE=-206, SQLSTATE=42703, DRIVER=4.19.56 这会告诉我Date
字段并不是真正的列...您可以发布两个表的表模式吗?这也是一个保留字,所以这可能是另一个问题。
等等,对不起,哈哈,这确实有效!为了发布这个,我更改了一些表名,但在查询时忘记改回来
更改了列名以保护无辜者。 :-) 酷!以上是关于如何根据单独列中的月份和年份参数对 DB2 结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章