0

すべてのベンダーについて、月ごとの売上データがあります。次の結果のフィールドを探しています...ベンダー、2012年の売上、2013年の売上、2012年の平均月間売上、2013年の月間予測売上。最後のフィールドは、私が最も苦労しているものです。過去 5 か月の完全な売上データを平均し、それを 12 倍する必要があります。これが私が取り組んでいるクエリです...

SELECT
    a.Vendor,
    a.Vendor_Name,
    SUM(a.Sales2012) AS Sales_2012,
    SUM(a.Sales2013) AS Sales_2013
FROM
(SELECT
    Vendor,
    Vendor_Name,
    CASE
        WHEN Month_Sold IN ('201201','201202','201203','201204','201205','201206','201207','201208','201209','201210','201211','201212') THEN SUM(Sales_Dlr) END AS 'Sales2012',
    CASE
        WHEN Month_Sold IN ('201301','201302','201303','201304','201305','201306','201307','201308','201309','201310','201311','201312') THEN SUM(Sales_Dlr) END AS 'Sales2013'
FROM
    dbo.SalesSummary
GROUP BY
    Vendor,
    Vendor_Name,
    Month_Sold
)a
GROUP BY
    a.Vendor,
    a.Vendor_Name
ORDER BY
    a.Vendor_Name
4

1 に答える 1

1

SalesSummary.Vendor が ID であると仮定すると、過去 5 か月のサブクエリを追加して、外側のクエリで 12 を掛けることができます。

DECLARE @Today DATE = GETDATE();

SELECT
    a.Vendor,
    a.Vendor_Name,
    SUM(a.Sales2012) AS Sales_2012,
    SUM(a.Sales2013) AS Sales_2013,
    b.Sales_Dlr_Avg * 12 AS [Monthly Projected Sales]
FROM
(SELECT
    Vendor,
    Vendor_Name,
    CASE
        WHEN Month_Sold IN ('201201','201202','201203','201204','201205','201206','201207','201208','201209','201210','201211','201212') THEN SUM(Sales_Dlr) END AS 'Sales2012',
    CASE
        WHEN Month_Sold IN ('201301','201302','201303','201304','201305','201306','201307','201308','201309','201310','201311','201312') THEN SUM(Sales_Dlr) END AS 'Sales2013'
FROM
    dbo.SalesSummary
GROUP BY
    Vendor,
    Vendor_Name,
    Month_Sold
)a
JOIN (
    SELECT Vendor, Sales_Dlr_Avg = AVG(Sales_Dlr)
    FROM dbo.SalesSummary
    WHERE DATEDIFF(MONTH, CAST(Month_Sold AS VARCHAR(6)) + '01', @Today) BETWEEN 1 AND 5
    GROUP BY Vendor
) b ON b.Vendor = a.Vendor
GROUP BY
    a.Vendor,
    a.Vendor_Name,
    b.Sales_Dlr_Avg
ORDER BY
    a.Vendor_Name;
于 2013-03-28T15:25:34.830 に答える