我正在尝试使用 PIVOT 来获取每种产品的购买总重量,并按列中的年/月进行分割。像这样的事情:
+------------+--------+--------+--------+
| ProductKey | Jan-14 | Feb-14 | Mar-14 | Etc...
+------------+--------+--------+--------+
| 10 | 5000 | 7000 | 3000 |
| 20 | 10000 | 8000 | 6000 |
| 30 | 250 | 500 | 400 |
+------------+--------+--------+--------+
这是我第一次尝试使用 PIVOT,所以不确定这是否正确:
PIVOT
(
SUM([PO_PurchaseOrderLines].[EstimatedWeight])
FOR
LEFT(DATENAME(MONTH,[PO_Date]),3) & "-" & RIGHT(YEAR([PO_Date]),2)
IN (Jan-14, Feb-14, Mar-14, Apr-14, May-14, Jun-14, Jul-14, Aug-14, Sep-14, Oct-14, Nov-14, Dec-14, Jan-15, Feb-15, Mar-15, Apr-15, May-15, Jun-15, Jul-15, Aug-15, Sep-15, Oct-15, Nov-15, Dec-15, Jan-16, Feb-16, Mar-16, Apr-16, May-16, Jun-16, Jul-16, Aug-16, Sep-16, Oct-16, Nov-16, Dec-16, Jan-17, Feb-17, Mar-17)
) AS POPivot
运行此结果:
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'LEFT'.
在 FOR
部分中使用这样的表达式是不可能的吗?还有什么不正确的吗?
最佳答案
Select *
From (
Select ProductKey
,Col = format(PO_Date,'MMM-yy')
,EstimatedWeight
From YourTable A
) A
Pivot (sum(EstimatedWeight) For [Col] in ([Jan-14],[Feb-14],[Mar-14]) ) p
关于sql - PIVOT 的 FOR 部分中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128096/