Sql 从三个表中选择计数,并按一个字段分组
我有三个表,其中我想按DateStart DateEnd和一个外键进行分组并计算行数 表1:Sql 从三个表中选择计数,并按一个字段分组,sql,sql-server,Sql,Sql Server,我有三个表,其中我想按DateStart DateEnd和一个外键进行分组并计算行数 表1: start end FK 10/01/2014 12/01/2014 5 10/01/2014 13/01/2014 5 table 2 10/01/2014 12/01/2014 5 10/01/2014 13/01/2014 6 table 3 10/01/2014 12/01/2014
start end FK
10/01/2014 12/01/2014 5
10/01/2014 13/01/2014 5
table 2
10/01/2014 12/01/2014 5
10/01/2014 13/01/2014 6
table 3
10/01/2014 12/01/2014 5
10/01/2014 13/01/2014 7
Result
10/01/2014 12/01/2014 5 3 (rows)
10/01/2014 13/01/2014 5 1
10/01/2014 13/01/2014 6 1
10/01/2014 13/01/2014 7 1
编辑:
这是我的尝试(针对前两个表),但不符合示例:
SELECT query.IDchild as IDchild,
Count(query.Number) as Number,
query.DateStart as DateStart,
query.DateEnd as DateEnd
(SELECT RES.IDchild as IDchild,
Count(RES.Number) as Number,
RES.DateStart as DateStart,
RES.DateEnd as DateEnd
FROM [dbo].[VA_R] as RES
WHERE (condition)
GROUP BY RES.IDchild ,RES.DateStart,RES.DateEnd
Union all
SELECT RES_o.IDchild as IDchild,
Count(RES_o.Number) as Number,
RES_o.DateStart as DateStart,
RES_o.DateEnd as DateEnd
FROM [dbo].[VA_R_o] as RES_o
WHERE (condition)
GROUP BY RES_o.IDchild ,RES_o.DateStart,RES_o.DateEnd, RES_o.PK_R) as query
GROUP BY RESqueryo.IDchild ,query.DateStart,query.DateEnd
应该这样做。首先合并所有结果,然后按相关字段分组。根据评论中所述。联合所有人,根据结果分组。此外,它是列,不是字段。@MitchWheat请参见编辑
SELECT T.start, T.end, T.FK, COUNT(*)
FROM (
SELECT start, end, FK
FROM YourTable1
UNION ALL
SELECT start, end, FK
FROM YourTable2
UNION ALL
SELECT start, end, FK
FROM YourTable3
) AS T
GROUP BY T.start, T.end, T.FK