Sql 如何让信息显示在某一列的一行中,同时填充其他列中的多行?
我正在使用SQL Server管理工作室 我无法在谷歌或stackoverflow上找到我的答案,可能是因为措辞不当 我要做的是我试图在日期(第1列)中只包含一个在其下方有空字段的日期,但我也尝试按第2列分组,并在第3列中包含一个计数。我还尝试在第一行中获取计数不同的第4列、第5列和第6列,以及下面的空白字段(类似于日期列) 我是如何尝试做到这一点的 我曾尝试使用“partition by”,但它只在我的列的所有行中给我一个“1”,而不是第一行中的一个计数,列的其余部分留空。我可能写得不正确,但我不再有我用来举例说明的代码 我也尝试过做一个子查询,但它在每一行的整个列中都给出了相同的计数 我向您展示了我的当前输出,以及我用来获取它的代码,以及我想要的输出 我的数据当前如下所示:Sql 如何让信息显示在某一列的一行中,同时填充其他列中的多行?,sql,tsql,ssms,Sql,Tsql,Ssms,我正在使用SQL Server管理工作室 我无法在谷歌或stackoverflow上找到我的答案,可能是因为措辞不当 我要做的是我试图在日期(第1列)中只包含一个在其下方有空字段的日期,但我也尝试按第2列分组,并在第3列中包含一个计数。我还尝试在第一行中获取计数不同的第4列、第5列和第6列,以及下面的空白字段(类似于日期列) 我是如何尝试做到这一点的 我曾尝试使用“partition by”,但它只在我的列的所有行中给我一个“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方面没有太多的经验,因此任何和所有的帮助都将不胜感激
有没有一个问题已经有了我正在寻找的答案?如果是的话,你能告诉我这个问题吗?我还没有找到答案。您可以在SQL中这样做,但是这种表示层的更改最好在应用层中完成
但是,您可以使用行号()
和按顺序进行操作
:
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;
您应该在应用程序层进行这种类型的重新格式化。这对日期字段有效。非常感谢你。有没有办法在同一个查询中对计数列再次执行此操作?@jgord。这种逻辑适用于任何领域。如果不明显,您可以用样本数据和期望的结果问另一个问题。