SQL求和函数查询
我很难把两张表上的一列内容汇总起来。场景是这样的(参考下图) 表1每个日期可能有很多行。但表2可能每个日期只包含两行数据。我想做的是根据日期汇总所有项目/价格(表1),并将其与表2的另一个项目/价格相加。金额的类别是按日期划分的 我尝试了任何joins语句(left、right或internal),但它并没有产生我期望的结果。我的预期结果是结果表。但在我的查询中,它产生了一个非常高的值 谢谢。试试这个SQL求和函数查询,sql,sql-server,Sql,Sql Server,我很难把两张表上的一列内容汇总起来。场景是这样的(参考下图) 表1每个日期可能有很多行。但表2可能每个日期只包含两行数据。我想做的是根据日期汇总所有项目/价格(表1),并将其与表2的另一个项目/价格相加。金额的类别是按日期划分的 我尝试了任何joins语句(left、right或internal),但它并没有产生我期望的结果。我的预期结果是结果表。但在我的查询中,它产生了一个非常高的值 谢谢。试试这个 Select t.date,P1+P2 from( Select Date,sum(Pric
Select t.date,P1+P2
from(
Select Date,sum(Price) P1
from table1 t
group by Date
) t
left join
(
Select Date,sum(Price) P2
from table t2
group by date
) t1 on t.date = t1.date
group by date
使用如下的
UNION
子句:
WITH t(d, p) AS (
SELECT [Date], Price FROM Table1
UNION ALL
SELECT [Date], Price FROM Table2
)
SELECT d, SUM(p) FROM t GROUP BY d
试试这个
with cte (C_Date,C_Price)
as
(
SELECT date,SUM(price) FROM table_1
group by date
union
SELECT date,SUM(price) FROM table_2
group by date
)
select c_date,SUM(c_price) from cte
group by C_Date
您可以在子查询或cte中使用
UNION ALL
执行此操作,cte如下所示:
;WITH cte AS (SELECT [Date], Price
FROM Table1
UNION ALL
SELECT [Date], Price
FROM Table2
)
SELECT [Date], SUM(Price) AS Total_Price
FROM cte
GROUP BY [Date]
演示:也许您应该在问题中澄清,表1和表2中的项目实际上并不相关。由于名称相同,示例数据具有误导性。如果两个表为给定日期生成了相同的
SUM()
,这将失败,因为UNION
删除了重复值,需要UNION All
。也可能更有效的方法是不用担心cte中的聚合。是的,它适用于示例值,但如果每个表中的值具有相同的SUM()
,则会产生不正确的总计。