2013-11-20 55 views
0

對於模糊的描述很抱歉,但我不知道該怎麼說。如何合併基於條件的select語句中的行

下面是來自SELECT語句的樣本結果:

Number  Type  Name 
67   NULL  George 
67   Boy  Kevin 

我想要什麼:

Number  Type  Name 
67   Boy  George 

換句話說,如果類型爲null我要選擇的名稱,而是選擇從另一行輸入。

希望是有道理的。

編輯:我在評論中被問及提供更多信息。以上結果是一個更大更復雜的查詢結果的簡化版本。這是與該查詢匹配的簡化版本。另外,我不要求代碼。如果我能得到一個指向解決方案的指針,我可以自己找出代碼。我只是不確定我在尋找哪些關鍵字。謝謝。

SELECT DISTINCT Number, [Type], Name 
FROM   MyTable 
WHERE  Number = 67 
GROUP BY Number, [Type], Name 
+0

詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,以及爲什麼他們不工作。 – Kermit

+0

感謝您的反饋。我想問最好的問題。上面的結果是從我寫的一個更復雜的SELECT語句中簡化的。我將盡快提供該聲明的簡化版本。 – elDDeR

+0

所以Number字段是兩行之間的連接,表示這是我想要的Type值?每個數字可以有多個類型值?如果是這樣,你如何選擇哪一個?等等? –

回答

1

如果只有一種可能每個號碼非空類型值,你可以做

SELECT 
    Number, 
    ISNULL(Type, 
     (SELECT TOP 1 Type FROM Table T1 WHERE T1.Number = T.Number)) as Type, 
    Name 
FROM 
    Table T 
1

如果你不關心返回哪個記錄,如果有一個以上的非NULL,則可以使用GROUP BY

DECLARE @Tbl TABLE (ID INT, A VARCHAR(10), B VARCHAR(10)) 
INSERT INTO @Tbl (ID, A, B) VALUES 
    (1, 'Alice', NULL), 
    (1, NULL, 'Smith') 

SELECT 
    ID, MIN(A), MIN(B) 
FROM 
    @Tbl 
GROUP BY 
    ID 

輸出:

1 Alice Smith