我需要你的帮助!
count Day Title Sum
1 02.10.2017 Urlaub 400
2 03.10.2017 Feiertag 400
2 03.10.2017 0 400
4 04.10.2017 11210 400
4 04.10.2017 11210 400
4 04.10.2017 0 400
4 04.10.2017 0 400
2 05.10.2017 0 400
2 05.10.2017 0 400
我需要像上面的表一样使用SQL-Query进行解析。这是一个MSSQL Server 2012. SQL语句从表中选择* 返回:
Day Title Sum
02.10.2017 Urlaub 400
03.10.2017 Feiertag 400
03.10.2017 0 400
04.10.2017 11210 400
04.10.2017 11210 400
04.10.2017 0 400
04.10.2017 0 400
05.10.2017 0 400
05.10.2017 0 400
所以我想添加列数,它表示cloumn Day 相等的数据集数量。
有人知道解决方案吗?
答案 0 :(得分:2)
这与窗口聚合很简单:
declare @t table (Day date not null, Title varchar(30) not null, Sum int not null)
insert into @t(Day,Title,Sum) values
('20171002','Urlaub',400),
('20171003','Feiertag',400),
('20171003','0',400),
('20171004','11210',400),
('20171004','11210',400),
('20171004','0',400),
('20171004','0',400),
('20171005','0',400),
('20171005','0',400)
select
*,
COUNT(*) OVER (PARTITION BY Day)
from
@t
结果:
Day Title Sum
---------- ------------------------------ ----------- -----------
2017-10-02 Urlaub 400 1
2017-10-03 Feiertag 400 2
2017-10-03 0 400 2
2017-10-04 11210 400 4
2017-10-04 11210 400 4
2017-10-04 0 400 4
2017-10-04 0 400 4
2017-10-05 0 400 2
2017-10-05 0 400 2
答案 1 :(得分:1)
这个问题已经得到了解答,但是我将添加我的2cents,其答案不使用窗口函数,但是相关的子查询应该可以在不同的DBMS中使用
SELECT (SELECT COUNT(day) FROM YourTable WHERE day = t.day),
day,
title,
sum
FROM YourTable t
ORDER BY day