-1

我是 SQL 新手,我不知道该怎么做。我想为类似对(vin,action)总结一个名为“total_spending”的库,并选择第一个dealer_name和参考月份年份(因此它不会创建重复项)并具有类似示例的输出:输入

action  dealer_name   vin    Total_spending reference month year 
A1      D1            V1         T1             R1     M1    Y1
A2      D2            V2         T2             R1     M1    Y1
A2      D2            V2         T3             R2     M2    Y2
A3      D2            V1         T4             R1     M1    Y1
A4      D1            V2         T5             R1     M1    Y1
A2      D1            V2         T6             R1     M1    Y1
A1      D1            V1         T7             R2     M2    Y2
A4      D1            V2         T8             R2     M2    Y2
A1      D1            V1         T9             R3     M3    Y3
A3      D2            V2         T10            R1     M1    Y1
A3      D2            V1         T11            R2     M2    Y2

输出

action  dealer_name   vin    Total_spending reference month year 
A1      D1            V1         T1 + T7 + T9   R1     M1    Y1
A2      D2            V2         T2 + T3        R1     M1    Y1
A3      D2            V1         T4 + T11       R1     M1    Y1
A4      D1            V2         T5 + T8        R1     M1    Y1
A2      D1            V2         T6             R1     M1    Y1
A3      D2            V2         T10            R1     M1    Y1


    SELECT
        action,
        dealer_name,
        vin,
        SUM(total_spending) as total_spending,
        reference,
        year,
        issue_date,
        country_code
    FROM
        db_raw_irn_67634_vdt.sap_vme_pol
    GROUP BY
        action,
        dealer_name,
        vin,
        reference,
        year,
        issue_date,
        country_code
4

2 回答 2

0

如果您的 RDBMS 支持窗口功能,您可以做一个窗口SUM()并使用ROW_NUMBER()来选择要显示的相关记录:

SELECT 
    action,
    dealer_name,
    vin,
    total_spending,
    reference,
    month, 
    year
FROM (
    SELECT
        action,
        dealer_name,
        vin,
        SUM(total_spending) OVER(PARTITION BY action, dealer_name, vin) total_spending,
        ROW_NUMBER() OVER(PARTITION BY action, dealer, vin ORDER BY reference, year, month) rn,
        reference,
        month, 
        year
    FROM mytable
) x
WHERE rn = 1
于 2019-10-03T09:27:40.137 回答
0
SELECT action
    ,dealer_name
    ,vin
    ,SUM(total_spending)
    ,MIN(reference)
    ,MIN(month)
    ,MIN(YEAR)
FROM db_raw_irn_67634_vdt.sap_vme_pol
GROUP BY action
    ,dealer_name
    ,vin
于 2019-10-03T09:29:44.750 回答