我只知道时间并集是这样SELECT CONVERT(varchar(100), ordertime, 23) from RegisterUsers A INNER JOIN M_UserOrderAudio B on A.Id=B.UserId UNION SELECT CONVERT(varchar(100), ordertime, 23) from RegisterUsers A INNER JOIN M_UserOrderProduct C on A.Id=C.UserId
你先用UNION ALL把B和C表查询的相关字段合并成一个表,在JOIN表A并统计时间。
作为外键的 UserId 不会凭空多出来的,所以没必要关联 A 表。 SELECT ordertime, SUM(Fee) Fee FROM ( select CONVERT(varchar(100), ordertime, 23) as ordertime, sum(ISNULL(Fee, 0)) AS Fee from M_UserOrderAudio GROUP BY CONVERT(varchar(100), ordertime, 23) UNION ALL select CONVERT(varchar(100), ordertime, 23) as ordertime, sum(ISNULL(Fee, 0)) AS Fee from M_UserOrderProduct GROUP BY CONVERT(varchar(100), ordertime, 23) ) t GROUP BY ordertime
UNION
SELECT CONVERT(varchar(100), ordertime, 23) from RegisterUsers A INNER JOIN M_UserOrderProduct C on A.Id=C.UserId
SELECT ordertime,
SUM(Fee) Fee
FROM (
select CONVERT(varchar(100), ordertime, 23) as ordertime,
sum(ISNULL(Fee, 0)) AS Fee
from M_UserOrderAudio
GROUP BY CONVERT(varchar(100), ordertime, 23)
UNION ALL
select CONVERT(varchar(100), ordertime, 23) as ordertime,
sum(ISNULL(Fee, 0)) AS Fee
from M_UserOrderProduct
GROUP BY CONVERT(varchar(100), ordertime, 23)
) t
GROUP BY ordertime