我有一个类似于下面显示的SQL查询
SELECT col1 AS 'Column 1', SUM(ROUND(col2, 2)) AS 'Column 2'
FROM db.dbo.table
GROUP BY col1
这是在PHP脚本中运行的,用于生成JSON。第1列是浮点类型,第1列中的大块数据是0.我希望每当第1列中的值为0时,它将其替换为UNKNOWN
。例如。我上面的查询将输出类似的内容
------------------------------
|0 |142563 |
------------------------------
|1 |348 |
------------------------------
|2 |2535 |
------------------------------
|3 |32 |
------------------------------
|4 |82536 |
------------------------------
|5 |12 |
------------------------------
我希望它像这样
------------------------------
|UNKNOWN |142563 |
------------------------------
|1 |348 |
------------------------------
|2 |2535 |
------------------------------
|3 |32 |
------------------------------
|4 |82536 |
------------------------------
|5 |12 |
------------------------------
有人可以帮帮我吗?谢谢!
答案 0 :(得分:4)
您想使用case
声明:
SELECT (case when col1 = 0 then 'Unknown' else cast(col1 as varchar(255)) end) AS 'Column 1',
SUM(ROUND(col2, 2)) AS 'Column 2'
FROM db.dbo.table
GROUP BY col1;
我还添加了一个明确的cast()
,因为col1
是一个浮点数。
如果要控制格式,请使用str()
。也许:
SELECT (case when col1 = 0 then 'Unknown' else str(col1, 6, 2) end) AS 'Column 1',
SUM(ROUND(col2, 2)) AS 'Column 2'
FROM db.dbo.table
GROUP BY col1;
答案 1 :(得分:2)
使用TSQL CASE
声明
SELECT CASE WHEN col1 = 0 THEN 'Unknown' ELSE Col1 END AS 'Column 1', SUM(ROUND(col2, 2)) AS 'Column 2'
FROM db.dbo.table
GROUP BY col1
答案 2 :(得分:0)
在SQL Server 2012中,您可以执行
SELECT IIF(col1 = 0, 'UNKNOWN', cast(col1 as varchar(100)))AS 'Column 1', SUM(ROUND(col2, 2)) AS 'Column 2'
FROM table
GROUP BY col1;