繁体   English   中英

SQL 将多行合并并汇总为一行

[英]SQL merge and sum multiple rows into one row

我加入了多个表并获得了一个结果集,该结果集具有相同 ID 或类型的不同行,但它们具有不同的列值。

例如。

| Number     | creation_date | value_1 | value_2 | value_3(value_1-value_2)
| --------   | --------      | ------  | ------  | ----- |
| 33445500   | 2022-03-20    | 30000   | 0       | 30000 |
| 33445500   | 2022-03-25    | 30000   | 0       | 30000 |
| 33445511   | 2022-03-25    | 20000   | 10000   | 10000 |
| 33445512   | 2022-01-01    | 20000   | 10000   | 10000 |
| 33445512   | 2022-03-25    | 20000   | 0       | 20000 |

我想要如下结果:

| Number     | creation_date | value_1 | value_2 | value_3(value_1-value_2)
| --------   | --------      | ------  | ------  | ----- |
| 33445500   | 2022-03-25    | 60000   | 0       | 60000 |
| 33445511   | 2022-03-25    | 20000   | 10000   | 10000 |
| 33445512   | 2022-03-25    | 40000   | 10000   | 30000 |
How can this be done in SQL?
I would appreciate any kind of help. Thank you!


select 
CONVERT( date, SYSDATETIME() ) as some_date,
LEFT(value_1,9) as value_1,

from database
join  a__ on a__.a__b = b__.bbb_ref
join  k__ on k__.kae__ref = b__.bbb__ref
join  af__ on af__.af_ref = b__.af__ref

where lorem ipsum

尝试这个

SELECT 
    Number, 
    MAX(creation_date) creation_date, 
    SUM(value1) value1,
    SUM(value2) value2,
    SUM(value3) value3
FROM myTable
GROUP BY Number

有点像另一个答案,但有些不同:

SELECT
        Number
    ,   MAX(creation_date) AS [creation_date]
    ,   SUM(value_1) AS [value_1]
    ,   SUM(value_1) AS [value_1]
    ,   SUM(value_1 - value_2) AS [value_3]
FROM result_set
GROUP BY Number
ORDER BY Number, MAX(creation_date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM