2017-07-10 8 views
0

Ich habe eine Transaktionstabelle, die ich PIVOT (Quantity by Month). Die folgende Abfrage wird ordnungsgemäß ausgeführt, schließt jedoch Elemente aus, die in der Tx-Tabelle keine Werte enthalten (und nicht vorhanden sind). Ich habe zuerst die GIP-Tabelle (eine vollständige Liste aller Elemente und verschiedene Informationen zu jedem Element) zuerst verwendet und die Tx-Tabelle dazu hinzugefügt, aber das hat nicht funktioniert. Ich versuchte auch LEFT OUTER JOIN und fügte auch einen NULL-Qualifier in die WHERE-Klausel ein. Bonus, wenn jemand dies in eine dynamische Abfrage für die Monate in Reihenfolge umwandeln kann.SQL PIVOT zeigt keine NULL Ergebnisse

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 

Antwort

0

Das hat nichts mit dem Drehpunkt zu tun. Die Bedingungen auf der Sekunden Tabelle müssen in der ON Klausel sein:

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] AND 
     Tx.[Date_Posted] >= '2016-07-01' AND 
     Tx.[Date_Posted] <= '2017-06-30' 
WHERE GIP.[Station__no] = 658 AND GIP.[generic_inventory] = 623 

Während Sie gerade dabei sind, sollten Sie Standarddatumsformate verwenden. Weniger zweideutig (und einfacher zu lesen;).

+0

Ja, tatsächlich! Vielen Dank! – Fizicks