【发布时间】:2017-12-14 08:21:19
【问题描述】:
我有一个要 PIVOT 的交易表(按月计算的数量)。下面的查询执行得很好,但它排除了 Tx 表中没有值(并且不存在)的项目。我首先使用了 GIP 表(所有项目的完整列表以及每个项目的各种信息),然后将 Tx 表加入其中,但这不起作用。我还尝试了 LEFT OUTER JOIN 并将 NULL 限定符添加到 WHERE 子句中。 如果有人可以按顺序将其转换为月份的动态查询,则将获得奖励。
SELECT
CAST([item_no] AS INT) 'IMF',
[1] AS 'Jan',
[2] AS 'Feb',
[3] AS 'Mar',
[4] AS 'Apr',
[5] AS 'May',
[6] AS 'Jun',
[7] AS 'Jul',
[8] AS 'Aug',
[9] AS 'Sep',
[10] AS 'Oct',
[11] AS 'Nov',
[12] AS 'Dec'
FROM
(SELECT
GIP.[Station__No],
GIP.[generic_inventory],
GIP.[item_no],
(Tx.[Quantity]*-1) Qty,
MONTH(Tx.[Date_Posted]) TMonth
FROM
[Surgery].[genericx_inventory_item_445_01] GIP
LEFT JOIN [CDWWork].[IFCAP].[inventory_transaction_445_2] Tx ON Tx.[station__no] = GIP.[station__no] AND Tx.[Inventory_Point] = GIP.[generic_inventory] AND GIP.[Itemnox] = Tx.[Item_no]
where GIP.[Station__no] = 658
and Tx.[Date_Posted] >= '7/01/16'
and Tx.[Date_Posted] <= '6/30/17'
and GIP.[generic_inventory] = 623
) As x
PIVOT
(
SUM(Qty)
FOR TMonth
IN( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
)P
【问题讨论】: