如何根据单独列中的月份和年份参数对 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 结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何根据唯一列和单独列中的最高量过滤结果集?

如何从 DataFrame 的日期列中提取月份名称和年份

如何根据一定的逻辑创建一个检索年份的函数

jquery中根据年份月份获取日期

sqlserver截取日期的年份和月份

将月份名称和年份组合在一列中