我正在使用SQL Server Mgmt Studio
我无法在谷歌或stackoverflow上找到我的答案,可能是由于措辞。
我要做的是什么
我想在日期(第1列)中只有一个日期在其下面有空字段但是我&#39 ; m也尝试按column3分组,其中包含column3中的count。我也试图让column4,column5和column6在第一行显示不同的计数,并在下面显示空白字段(类似于日期列)。
我是如何尝试的
我试过使用"分区",但它只给了我一个' 1'在我的列的所有行中,而不是仅在第一行中的计数与列的其余部分留空。我可能没有正确写入,但我不再拥有我曾经为此举例的代码。
我也试过做一个子查询,但它在每一行的整个列中都给了我相同的计数。
我正在向您显示我当前的输出,其中包含我用来获取它的代码以及我想要的输出。
我的数据目前看起来像这样:
Date | Bucket | #InBucket
2017-03-08 | NULL | 300
2017-03-08 | A | 27
2017-03-08 | B | 0
2017-03-08 | c | 4
2017-03-08 | D | 6
我用来获取此数据的查询是:
select convert(date, getdate(), 101) as [Date], dpcd.bucket, count(*) as [# in Bucket]
from mytable dpcd
where convert(date, getdate(), 101) = convert(date, deletedon, 101)
group by bucket
order by Bucket
我想要的输出如下:
Date | Bucket | #InBucket | column4 | column5 | colum6
2017-03-08 | NONE | 300 | 400 | 200 | 500
| A | 27 | | |
| B | 0 | | |
| c | 4 | | |
| D | 6 | | |
很久的解释,我道歉。我甚至想做什么?我没有很多SQL经验,所以我们将不胜感激。
是否已经有一个问题有我正在寻找的答案?如果是这样,你能指导我这个问题吗?我找不到答案。
答案 0 :(得分:1)
你可以在SQL中执行此操作,但在应用程序层中更好地完成此类表示层更改。
但是,您可以使用row_number()
和order by
:
select (case when seqnum = 1 then [Date] end) as [Date],
bucket, [# in Bucket]
from (select convert(date, getdate(), 101) as [Date],
dpcd.bucket, count(*) as [# in Bucket],
row_number() over (order by bucket) as seqnum
from mytable dpcd
where convert(date, getdate(), 101) = convert(date, deletedon, 101)
group by bucket
) d
order by Bucket;