sql - MS Sql Server statement inside COUNT
问题描述
It does work in BigQuery but i do not get what am I doing incorrectly in MS SQL Server;
CASE
WHEN COUNT( RSM.RECEIVED_AT BETWEEN DATEADD(day, -84,UDATE.SQLDate) AND UDATE.SQLDate ) >= 1
AND COUNT(SAL.DATE BETWEEN DATEADD(day, -7, UDATE.SQLDate) AND UDATE.SQLDate) >=2
AND COUNT(SAL.DATE BETWEEN DATEADD(day, -14, UDATE.SQLDate) AND DATEADD(day, -7, UDATE.SQLDate)) >= 2
THEN 'True'
ELSE 'False' END AS AVAILABLE
What is the issue??
- Incorrect syntax near ')'.
解决方案
I suspect what you are after is:
CASE
WHEN COUNT(CASE WHEN RSM.RECEIVED_AT BETWEEN DATEADD(DAY, -84, UDATE.SQLDate) AND UDATE.SQLDate THEN 1 END) >= 1
AND COUNT(CASE WHEN SAL.[DATE] BETWEEN DATEADD(DAY, -7, UDATE.SQLDate) AND UDATE.SQLDate THEN 1 END) >= 2
AND COUNT(CASE WHEN SAL.[DATE] BETWEEN DATEADD(DAY, -14, UDATE.SQLDate) AND DATEADD(DAY, -7, UDATE.SQLDate) THEN 1 END) >= 2 THEN 'True'
ELSE 'False'
END AS AVAILABLE;
As I said in the comments: "You can't have a boolean expression within a COUNT
(or any other aggregate function), it requires a scalar expression. "
推荐阅读
- java - 春季应用程序运行:失败
- c# - 如何无限次重复任务?
- redis - 使用 HSET 或 SETBIT 在 Redis 中存储 60 亿个 SHA256 哈希
- python-3.x - 为什么我的 LSTM 模型介于损失:0.3 到 0.5 和准确度:0.3 到 0.5 之间?喀拉斯
- c# - 错误:CS0029 无法隐式转换类型“System.Collections.Generic.List”
'到'X'? - javascript - 如何使用 JQuery 或 JavaScript 在 HTML 中的多个表之间添加一个表?
- node.js - 在 NextJS 中实现速率限制
- java - 无法单击“100”搜索结果类和 xpath - selenium webdriver java
- python-3.x - YOLO 输出图像数组的最后一维对应什么?
- javascript - 如何从数组中删除对象?