2013-09-24 119 views
0

我有2個表格:TSQL查找缺失值

表格A是所有可能的星期的日曆,我們應該有每個公司的銷售數據。

表B已經報告了每個公司每週的銷售財務數據。

表A柱

[cmp_code, Year, Week] 

TABLEB列

[cmp_code, Year, Week, sales] 

查詢條件:

1)名單週從表B本年度和上年度缺少對所有公司

2)L如果存在,則爲該公司上一年的銷售價值和周。 (例如,cmp 1234缺少2013年第13周,因此顯示2012年那周的值)

我試過連接,但是我得到0值返回或返回的數百萬個值。我真的不知道從哪裏開始。

我對SQL很陌生,非常感謝提供的任何幫助。提前致謝。

回答

2

這是一種方式:

SELECT TableA.*, bPrev.sales 
FROM TableA 
LEFT OUTER JOIN TableB 
    ON TableA.cmp_code = TableB.cmp_code 
    And TableA.[Year] = TableB.[Year] 
    And TableA.[Week] = TableB.[Week] 
LEFT OUTER JOIN TableB As bPrev 
    ON TableA.cmp_code = bPrev.cmp_code 
    And TableA.[Year] = bPrev.[Year]+1 
    And TableA.[Week] = bPrev.[Week] 
WHERE TableB.cmp_code IS NULL 
+0

RBarryYoung,謝謝。它在哪裏定義了前一年的價值? – d90

+0

@NicholasJDininno哎呀,它應該是第二個'LEFT'加入,但我忘記去年了。掛上...好的,現在就修好了。 – RBarryYoung

+0

這太棒了!奇蹟般有效。謝謝。我有最後一個問題,我保證我會留下你一個人。如果我添加「AND bPrev.othervalue IS NOT NULL」,查詢需要將近2分鐘才能運行。如果沒有這個價值,它需要1秒。任何想法爲什麼? – d90