2014-10-31 84 views
0

怎麼寫正確的SQL從存儲過程SQL服務器只能加入一個記錄

I have    SQL server JOIN   Desired 
    T1  T2    T3      T3 
    A A AAAA   A AAAA     A AAAA 
    A B BBBB   A AAAA     A 
    A C CCCC   A AAAA     A 
    A D DDDD   A AAAA     A 

我的SQL字符串只返回初入行的其他空值

SELECT OQ.*, 
SitesS.Siteaddress STOREADR 
FROM @OQ OQ, dbo.Sites SitesS 
WHERE OQ.STORE = SitesS.Sitenumber 

我有必須加入店鋪訂單列表與地址數據庫,我不想在同一商店的每一行重複相同的地址

+0

很難說你在做什麼錯誤,你的時候不要顯示你在做什麼。顯示你的SQL。 – 2014-10-31 05:56:43

+0

我不知道你在說什麼,或者你的解釋是想要描述什麼。 **如果您需要幫助,請顯示您的SQL **。 – 2014-10-31 06:01:37

+0

請描述你的問題(要實現什麼)。發佈您嘗試過的一些示例查詢。 – knkarthick24 2014-10-31 06:03:13

回答

1

這是很奇怪你想要實現的。

鑑於您的輸入是這樣的:

DECLARE @T1 TABLE (id VARCHAR(10)) 
DECLARE @T2 TABLE (id VARCHAR(10), address VARCHAR(20)) 

INSERT @T1 VALUES 
    ('A'), 
    ('A'), 
    ('A'), 
    ('A'), 
    ('B'), 
    ('B') 

INSERT @T2 VALUES 
    ('A', 'AAAA'), 
    ('B', 'BBBB'), 
    ('C', 'CCCC'), 
    ('D', 'DDDD') 

以下查詢:

SELECT id, CASE WHEN rowNum = 1 THEN address 
       WHEN rowNum > 1 THEN NULL 
      END 
FROM (
SELECT t1.id, t2.address, 
     ROW_NUMBER() OVER (PARTITION BY t1.id ORDER BY t1.id) AS rowNum 
FROM @T1 AS t1 
INNER JOIN @T2 AS t2 ON t1.id = t2.id) t 

產生這樣的輸出:

id address 
------------ 
A AAAA 
A NULL 
A NULL 
A NULL 
B BBBB 
B NULL 
+0

工作!對我來說,它足夠的SELECT OQ。*,CASE WHEN ROW_NUMBER()OVER(ORDER BY STORE)= 1 then SitesS.Siteaddress ELSE NULL END STOREADR – Maxrem 2014-10-31 07:16:52