2016-07-01 26 views
0

美好的一天我試圖獲取單位費率輸入時的項目,這是單位費率的開始日期,但是我在開始日期中得到空值我正在使用DATEDIFF我的腳本消除開始日期的空值

SELECT DISTINCT b.[Entry No_] , 
      a.[Starting Date], 
      b.[Posting Date], 
      b.[Item No_], 
      b.[Invoiced Quantity], 
      a.[Litre Conversion Factor], 
      a.[Unit Rate] , 
      b.[Location Code], 
      a.[Excise Location], 
      a.[Excise Type Code], 
      a.[Unit Of Measure Code] 
FROM [Spier Live$Value Entry] b 
LEFT JOIN [Transfer Excise Tbl] a 
    ON a.[No_] = b.[Item No_] 
    AND b.[Location Code] = a.[Location Code] 
    AND DateDiff(d,b.[Posting Date],a.[Starting Date]) <= 365 
    AND DateDiff(d,b.[Posting Date],a.[Starting Date]) > 0 
WHERE b.[Posting Date] > '2013-02-26' 
    AND b.[Gen_ Bus_ Posting Group] IN ('LOCA', 'EXSA') 
    AND b.[Invoiced Quantity] <> 0 
    AND b.[Item No_] = 'F00335' 
+3

當您使用'LEFT JOIN',但在所有的第一個表的條件應該是'ON'子句。 –

+1

當LEFT JOIN時,將右側表的條件放在ON子句中以獲得真正的左連接行爲。 (在WHERE中,您會得到常規的內部聯接結果。) – jarlh

+0

標記使用的dbms,DateDiff是產品特定的函數。 – jarlh

回答

0

試試這個

SELECT DISTINCT b.[Entry No_] , 
      a.[Starting Date], 
      b.[Posting Date], 
      b.[Item No_], 
      b.[Invoiced Quantity], 
      a.[Litre Conversion Factor], 
      a.[Unit Rate] , 
      b.[Location Code], 
      a.[Excise Location], 
      a.[Excise Type Code], 
      a.[Unit Of Measure Code] 
FROM [Spier Live$Value Entry] b 
LEFT JOIN [Transfer Excise Tbl] a 
    ON a.[No_] = b.[Item No_] 
    AND b.[Location Code] = a.[Location Code] 
    AND DateDiff(d,b.[Posting Date],a.[Starting Date]) <= 365 
    AND DateDiff(d,b.[Posting Date],a.[Starting Date]) > 0 
WHERE b.[Posting Date] > '2013-02-26' 
    AND b.[Gen_ Bus_ Posting Group] IN ('LOCA', 'EXSA') 
    AND b.[Invoiced Quantity] <> 0 
    AND b.[Item No_] = 'F00335' AND a.[No_] IS NOT NULL AND a.[Starting Date] IS NOT NULL 
+0

謝謝Vignesh但我錯過了100行這個腳本我需要得到461和你的腳本給我379 – user2941071

+0

檢查你的記錄是否有效 –

+0

我的剩餘記錄有效 – user2941071

相關問題