为什么我不能使用返回组错误的子查询?
SELECT hs.dateFin, hs.codeAdherent, hs.codeArticle
FROM hs
WHERE hs.codeFamilleArticle IN ('CNI', 'COT', 'ABO', 'ABOW',
'CNIW', 'O&T', 'EPH', 'TAX')
AND codeAdherent != 0
AND MAX(hs.dateFin) BETWEEN '2017-01-01'
AND '2017-12-31'
GROUP BY hs.codeAdherent
2018-01-01和2018-12-31的数据相同,但我只想得到2017年结束的数据。下面是一个包含140000个raw的表示例(并非所有列都显示)。
CODEA有2018、2017、2016年的数据。
CODEB拥有2018年、2017年的数据
CODEC仅适用于2017年。
如果我在2017年做了一个选择,我得到了所有的三个代码,那么之间的最大值将排除a和b。。。但这是行不通的
3条答案
按热度按时间epfja78i1#
不能使用聚合函数,如
Max()
内部Where
条款。您只需修改where
条件仅包括2017年的日期,然后确定Max()
分组依据后的日期。xtfmy6hx2#
你可以用
NOT EXISTS
检查2018年是否没有记录:jtjikinw3#
你可以这样做: