Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL求和函数查询_Sql_Sql Server - Fatal编程技术网

SQL求和函数查询

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

我很难把两张表上的一列内容汇总起来。场景是这样的(参考下图)

表1每个日期可能有很多行。但表2可能每个日期只包含两行数据。我想做的是根据日期汇总所有项目/价格(表1),并将其与表2的另一个项目/价格相加。金额的类别是按日期划分的

我尝试了任何joins语句(left、right或internal),但它并没有产生我期望的结果。我的预期结果是结果表。但在我的查询中,它产生了一个非常高的值

谢谢。

试试这个

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()
,则会产生不正确的总计。