如何在其他列中填充多行时,在某列中的某一行显示信息?

时间:2017-03-09 00:02:00

标签: sql tsql ssms

我正在使用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经验,所以我们将不胜感激。

是否已经有一个问题有我正在寻找的答案?如果是这样,你能指导我这个问题吗?我找不到答案。

1 个答案:

答案 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;