我的数据看起来像这样。有不同的存储桶,有多个ID,其中一些ID有数据,有些则没有。对于例如A6,L1和L2都在同一个桶中(Bucket1),A6有数据但L1和L2不在。
我尝试编写一个查询,该查询汇总了存储桶中具有数据(TRUE卷)的不同ID数,并且还总结了不具有数据的ID数(FALSE音量) ,然后添加2个卷以创建总体积。您可以在下面看到以下内容:
这就是我现在所拥有的:
select
Buckets,
case
when Date is not null then count(distinct Data)
end as TRUE_Vol,
case
when Date is null then 0
end as FALSE_Vol
from #temptable
group by Buckets, Date, Data
但是这段代码没有给我我想要的东西。我想我需要对它进行不同的分组,但我无法解决这个问题。任何帮助表示赞赏。
谢谢
答案 0 :(得分:0)
使用条件聚合时,case
进入聚合函数。
根据您的描述,您需要:
select Buckets,
count(distinct case when Date is not null then Data end) as TRUE_Vol,
sum(case when Date is null then 0 else 1 end) as FALSE_Vol
from #temptable
group by Buckets;
答案 1 :(得分:0)
您可以使用
选择性组select
Buckets,
sum ( case when Date is not null then 1 else 0 end) as TRUE_Vol,
sum ( case when Date is null then 1 else 0 end) as FALSE_Vol
from #temptable
group by Buckets