我有一个数据库,其中包含从2017年1月到现在的每月发货量。我想按年将年度发货数量放在唯一的列中(以操纵PowerBI可视化)。
第一个查询(无年度列)有效:
SELECT FORMAT(frcst.InvDate, 'yyyyMM') AS period_name
, MONTH(frcst.InvDate) AS month_num
, YEAR(frcst.InvDate) AS year_num
, frcst.LineCode
, frcst.ClassCode
, cc_type
, rank
, keycust1
, keycust2
, keycust3
, sales1
, sales2
, sales3
, SUM(GrossSales) AS gross_sales
, SUM (QtyShip + ( (QtyOrd - QtyShip) * 0.25) ) AS frcst_qty
FROM FrcstFactTbl frcst
JOIN account_hierarchy_lu account
ON frcst.AccountNumber = account.account_number
JOIN cc_type_lu cct
ON frcst.ClassCode = cct.class_code
JOIN pop_code_lu pop
ON frcst.PartNumber = pop.PartNumber
GROUP BY InvDate, frcst.LineCode, frcst.ClassCode, cc_type, rank, keycust1, keycust2, keycust3, sales1, sales2, sales3
ORDER BY InvDate
我在下面的查询中收到一个错误(带有年度列)。错误:
消息102,级别15,状态1,第12行,'2017'附近的语法不正确。
SELECT MONTH(frcst.InvDate) AS mnth
, frcst.LineCode
, frcst.ClassCode
, cc_type
, rank
, keycust1
, keycust2
, keycust3
, sales1
, sales2
, sales3
, SUM(ship2017.GrossSales) AS 2017gross_sales
, SUM(ship2017.QtyShip + ( (ship2017.QtyOrd - ship2017.QtyShip) * 0.25) ) AS 2017_frcst_qty
, SUM(ship2018.GrossSales) AS 2018gross_sales
, SUM(ship2018.QtyShip + ( (ship2018.QtyOrd - ship2018.QtyShip) * 0.25) ) AS 2018_frcst_qty
, SUM(ship2019.GrossSales) AS 2019_gross_sales
, SUM(ship2019.QtyShip + ( (ship2019.QtyOrd - ship2019.QtyShip) * 0.25) ) AS 2019_frcst_qty
, SUM(ship2020.GrossSales) AS ship2020_gross_sales
, SUM(ship2020.QtyShip + ( (ship2020.QtyOrd - ship2017.QtyShip) * 0.25) ) AS 2020_frcst_qty
FROM FrcstFactTbl frcst
JOIN account_hierarchy_lu account
ON frcst.AccountNumber = account.account_number
JOIN cc_type_lu cct
ON frcst.ClassCode = cct.class_code
JOIN pop_code_lu pop
ON frcst.PartNumber = pop.PartNumber
JOIN FrcstFactTbl ship2017
ON frcst.mnth = ship2017.mnth
AND frcst.LineCode = ship2017.LineCode
AND frcst.ClassCode = ship2017.ClassCode
AND frcst.keycust3 = ship2017.keycust3
JOIN FrcstFactTbl ship2018
ON frcst.mnth = ship2018.mnth
AND frcst.LineCode = ship2018.LineCode
AND frcst.ClassCode = ship2018.ClassCode
AND frcst.keycust3 = ship2018.keycust3
JOIN FrcstFactTbl ship2019
ON frcst.mnth = ship2019.mnth
AND frcst.LineCode = ship2019.LineCode
AND frcst.ClassCode = ship2019.ClassCode
AND frcst.keycust3 = ship2019.keycust3
JOIN FrcstFactTbl ship2020
ON frcst.mnth = ship2020.mnth
AND frcst.LineCode = ship2020.LineCode
AND frcst.ClassCode = ship2020.ClassCode
AND frcst.keycust3 = ship2020.keycust3
WHERE YEAR(ship2017.InvDate) = '2017'
AND YEAR(ship2018.InvDate) = '2018'
AND YEAR(ship2019.InvDate) = '2019'
AND YEAR(ship2020.InvDate) = '2020'
GROUP BY mnth, frcst.LineCode, frcst.ClassCode, cc_type, rank, keycust1, keycust2, keycust3, sales1, sales2, sales3
ORDER BY mnth
任何建议都值得赞赏。
分别用2017gross_sales
,2018gross_sales
和2019gross_sales
替换gross_sales_2017
,gross_sales_2018
和gross_sales_2019
。
最佳做法是,以字母字符开头列名。