如何解决我已经每月运行此代码一年多了,但由于某种原因,我刚刚通过/聚合错误获取此 SQL 组
消息 8120,级别 16,状态 1,第 95 行 列“#CampaignHistory.maturityDate”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 Msg 8120,Level 16,State 1,Line 96 列“#CampaignHistory.maturityDate”在选择列表中无效,因为它既不包含在聚合函数中也不包含在 GROUP BY 子句中。
这是我正在使用的代码。此代码上方的所有内容都运行良好,没有错误:
SELECT CASE WHEN maturityDate <= '2021-01-31' THEN 'Closed'
WHEN maturityDate >= '2021-02-01' THEN 'Active' END AS Campaign,COUNT (disTINCT CustomerID) AS Peeps
FROM #CampaignHistory
GROUP BY CASE WHEN maturityDate <= '2020-01-31' THEN 'Closed'
WHEN maturityDate >= '2021-02-01' THEN 'Active' END;
解决方法
SELECT 子句和 GROUP BY 子句中的表达式不同:第一个提到 2021-01-31,第二个提到 2020-01-31。
为避免重复代码并防止出现此类拼写错误,您可以使用以下查询之一:
SELECT Campaign,COUNT(DISTINCT CustomerID) AS Peeps
FROM (
SELECT CustomerID,CASE
WHEN MaturityDate <= '2021-01-31' THEN 'Closed'
WHEN MaturityDate >= '2021-02-01' THEN 'Active'
END AS Campaign
FROM #CampaignHistory
) x GROUP BY Campaign
或
SELECT Campaign,COUNT(DISTINCT CustomerID) AS Peeps
FROM #CampaignHistory
CROSS APPLY (
SELECT CASE
WHEN MaturityDate <= '2021-01-31' THEN 'Closed'
WHEN MaturityDate >= '2021-02-01' THEN 'Active'
END AS Campaign
) x
GROUP BY x.Campaign
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。