我正在尝试将 MySQL 查询转换为 T-SQL 查询,但 SUM 语句中包含的 IF 语句让我感到困惑。有什么建议吗?
SELECT
CMTS_RQ.[Dated],
CMTS_RQ.CMTS_Name,
Count(CMTS_RQ.CMTS_Name) AS emat_count,
Sum(if(CMTS_RQ.US_Pwr>=37 and CMTS_RQ.US_Pwr<=49)) AS us_pwr_good
FROM
CMTS_RQ
GROUP BY
CMTS_RQ.CMTS_Name,
CMTS_RQ.[Dated]
但是我收到一个错误:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'if'.
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ')'.
最佳答案
T-SQL 没有“内联”IF
声明 - 使用 CASE
相反:
SELECT
CMTS_RQ.[Dated],
CMTS_RQ.CMTS_Name,
Count(CMTS_RQ.CMTS_Name) AS emat_count,
Sum(CASE
WHEN CMTS_RQ.US_Pwr >=37 AND CMTS_RQ.US_Pwr <= 49
THEN 1
ELSE 0
END) AS us_pwr_good
FROM
CMTS_RQ
GROUP BY
CMTS_RQ.CMTS_Name,
CMTS_RQ.[Dated]
如果CMTS_RQ.US_Pwr
的值是 >= 37 AND <= 49
然后将 1 添加到 SUM
- 否则 0。这能给你你正在寻找的东西吗?
在 SQL Server 2012 及更高版本中,您可以使用新的 IIF
function :
SUM(IIF(CMTS_RQ.US_Pwr >= 37 AND CMTS_RQ.US_Pwr <= 49, 1, 0)) AS us_pwr_good
关于sql-server - 嵌入 sum() 函数中的 T-SQL IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528906/