0

以下に、購入したアイテムの金額、割引を差し引いた金額、および購入の月/年ごとにグループ化された合計を返すT-SQLクエリがあります。クエリを更新して、合計列の金額を合計できる総計行を返すにはどうすればよいですか?すべての行を合計できるのは良いことですが、私の主な項目は、総計を取得できる必要があるということです。ありがとう。

    Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) 
    AS [Month],
    SUM(Amount) AS [Amount],
    SUM(Discount1) AS [Discount 1],
    SUM(Discount2) AS [Discount 2],
    SUM(Amount - Discount1 - Discount2) AS [Total]
    From 
    Orders
    JOIN Customer on orders.cust_ky=customer.cust_ky
    GROUP BY DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4))
    ORDER BY MAX(OrderDate)
4

1 に答える 1

6

sql-server のバージョンによっては、ロールアップ機能を実装できる場合があります (SQL-Server 2005 以降)。

Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) AS [Month],
    SUM(Amount) AS [Amount],
    SUM(Discount1) AS [Discount 1],
    SUM(Discount2) AS [Discount 2],
    SUM(Amount - Discount1 - Discount2) AS [Total]
From Orders
JOIN Customer 
    on orders.cust_ky=customer.cust_ky
GROUP BY ROLLUP(DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)))
ORDER BY MAX(OrderDate)

UNION ALLまたは、これに似たものを使用できます。この場合、2 番目のクエリは を使用せずに合計を取得しGROUP BYます。

Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) AS [Month],
    SUM(Amount) AS [Amount],
    SUM(Discount1) AS [Discount 1],
    SUM(Discount2) AS [Discount 2],
    SUM(Amount - Discount1 - Discount2) AS [Total]
From Orders
JOIN Customer 
    on orders.cust_ky=customer.cust_ky
GROUP BY DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4))
union all
Select 'Total',
    SUM(Amount) AS [Amount],
    SUM(Discount1) AS [Discount 1],
    SUM(Discount2) AS [Discount 2],
    SUM(Amount - Discount1 - Discount2) AS [Total]
From Orders
JOIN Customer 
    on orders.cust_ky=customer.cust_ky
于 2012-10-25T20:49:37.030 に答える