我正在尝试将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]
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
Msg 156,Level 15,State 1,Line 5
关键字'if'附近的语法不正确.
消息102,级别15,状态1,行5
'''附近的语法不正确.
mar*_*c_s 16
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]
Run Code Online (Sandbox Code Playgroud)
因此,如果值CMTS_RQ.US_Pwr
是>= 37 AND <= 49
再加入1至SUM
-否则为0.这是否给你你在找什么?
在SQL Server 2012及更高版本中,您可以使用新IIF
功能:
SUM(IIF(CMTS_RQ.US_Pwr >= 37 AND CMTS_RQ.US_Pwr <= 49, 1, 0)) AS us_pwr_good
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23291 次 |
最近记录: |