这是示例查询:
我想要的是针对每个记录填充的每个RWL的不同ID的计数。
我想在一个查询中执行此操作,因为我的实际数据集很大。
create table temp_ayush
(id int,
RWL varchar(10),
cost int)
insert into temp_ayush
values
(1,'ABC',100),
(1,'ABC',200),
(2,'XYZ',300),
(2,'ABC',100)
select *
,count(id) over (partition by RWL)
from temp_ayush
答案 0 :(得分:1)
与其按RWL
进行分区,不如使用GROUP BY
和COUNT DISTINCT
,就像这样:
select RWL
,count(distinct id)
from temp_ayush
group by RWL
请注意,因为它使用GROUP BY
,所以您只能选择group by子句中包含的列。
如果您需要其他列,我建议在连接中使用以上内容,例如:
SELECT RWL,
IdCount,
Cost
FROM temp_ayush
JOIN ( select RWL
,count(distinct id)
from temp_ayush
group by RWL
) T
ON T.RWL = RWL
答案 1 :(得分:1)
create table #temp_ayush
(id int,
RWL varchar(10),
cost int)
insert into #temp_ayush
values
(1,'ABC',100),
(1,'ABC',200),
(2,'XYZ',300),
(2,'ABC',100)
select t.*
,c.Cnt
from #temp_ayush t
JOIN (
SELECT RWL, COUNT (DISTINCT ID) AS Cnt
FROM #temp_ayush
GROUP BY RWL
) c ON c.RWL = t.RWL
drop table #temp_ayush
答案 2 :(得分:0)
尝试以下查询之一:
1)如果要模仿窗口功能(count(distinct ..)
不能用作窗口功能),请使用:
select id,
RWL,
(select count(distinct ID) from temp_ayush where RWL = ta.RWL) countDistinct,
cost
from temp_ayush ta
2)如果要分组,请使用:
select RWL, count(distinct ID) from temp_ayush
group by RWL
答案 3 :(得分:0)
我认为您想要一个相关的子查询:
select *, (select count(distinct id) from #temp_ayush b where a.rwl = b.rwl)
from #temp_ayush a