到目前为止,我将此作为我的SQL查询:
SELECT value, count(value) over () as TOTAL from listofvalues GROUP BY value
结果如下:
value|TOTAL
IS18-0001| 6
IS18-0002| 6
IS18-0003| 6
IS18-0004| 6
IS18-0005| 6
IS18-0006| 6
我希望结果看起来更像是:
value|TOTAL
IS18-0001| 6
IS18-0002|
IS18-0003|
IS18-0004|
IS18-0005|
IS18-0006|
基本上我想将总数限制为1,但似乎无法找到解决方案,任何想法?这甚至可能吗?
答案 0 :(得分:2)
您可以检查row_number并将其他行设置为null(或'')
SELECT value,
case row_number() over () when 1 then count(value) over () else null end as TOTAL
from listofvalues GROUP BY value
答案 1 :(得分:0)
请尝试以下查询。我刚给你的查询添加了一个行号。
Select Value,case when RN=1 then Total else '' END Total
From(
select value,Cast(Total as varchar) Total,ROW_NUMBER() over (order by value) RN
from(
SELECT value,
count(value) over () as TOTAL
from #listofvalues GROUP BY value
)A)B
答案 2 :(得分:0)
您似乎不需要group by
,所以我会从以下开始:
SELECT value,
(CASE WHEN row_number() over (order by value) = 1
THEN count(*) over ()
END) as TOTAL
FROM listofvalues ;
仅当您有多个具有相同值的行时才需要GROUP BY
。如果你有重复项,你的查询正在做一些非常具体的事情 - 计算不同值的数量,同时列出每个值一次。它不计算原始数据中的行数。