基本上,我有两个表table1和table2
这些是这些表格的输出。
This is the sample output of table1,
ID PDATE
4 2013-04-16T17:47:49
4 2013-04-16T17:36:40
5 2013-04-16T17:58:23
5 2013-04-16T17:37:47
11 2013-04-17T17:51:28
5 2013-04-17T18:10:28
4 2013-04-17T18:10:14
11 2013-04-17T17:39:11
This is the sample output of table 2,
ID RDATE
4 2013-04-16T17:42:58
5 2013-04-16T17:55:22
5 2013-04-19T17:31:07
5 2013-04-19T17:16:03
5 2013-04-19T17:00:50
4 2013-04-19T17:06:34
17 2013-04-19T17:57:32
我想加入这些表格,并在一周内获得每天ID号码计数的输出。 由于两个输出中的日期列都是日期+时间(U可以忽略时间部分,只考虑日期部分)
我的预期输出应该是,
ID COMBINEDDATE
2 2013-04-16
3 2013-04-17
0 2013-04-18
3 2013-04-19
以上输出基于两个表的输出。
注意:如果具有相同时间戳的两个表中都存在相同的ID(忽略时间部分) 即使同一天内存在多个相同身份证的条目,也要将此计数视为1。
答案 0 :(得分:0)
查询:
;with
Datas(ID, PDate) as
(
select ID, cast(convert(varchar, PDate, 101) as datetime) PDate
from TableA
union all
select ID, cast(convert(varchar, PDate, 101) as datetime) PDate
from TableB
),
Dates(PDate, MaxPDate) as
(
select min(PDate) PDate, max(PDate) MaxPDate
from Datas
union all
select PDate + 1 PDate, MaxPDate
from Dates
where
(PDate + 1) <= MaxPDate
)
select count(distinct ID), convert(varchar, Dates.PDate, 101) PDate
from
Dates
left join Datas on Dates.PDate = Datas.PDate
group by Dates.PDate
order by 2