2017-01-09 40 views
0

這是一個後續的問題我剛纔的問題:How to get multiple rows of data into different columns如何在SQL的同一行上加入結果?

我的查詢看起來非常相似,在前面的問題提供了一個:我已經得到了我的查詢,以將數據輸出到一個

SELECT AccountID, 
    Value1 = MAX(CASE WHEN RN = 1 THEN Value END), 
    Value2 = MAX(CASE WHEN RN = 2 THEN Value END), 
    Value3 = MAX(CASE WHEN RN = 3 THEN Value END) 
FROM 
(
SELECT AccountID, 
     Value = CONVERT(VARCHAR(50), Value), -- Cast GUID as VARCHAR(50) to use MAX() in the outer query. 
     RN = ROW_NUMBER() OVER (PARTITION BY AccountID ORDER BY Value) 
FROM @myTable 
) T 
GROUP BY AccountID; 

一行如下:

AccountID        Value1         Value2         Value3 
6D68E2C9-4BF8-433B-8BC3-57D87348D034 F0BFA1B1-744A-4DBC-BE27-19D1618D77EA E22A4B08-40DC-42E5-BC15-72A6912D0D66 A955B30C-5352-4B48-9E96-8A831AFA0751  

我現在的問題是,我需要使用從值1,值了值的其他數據表中獲取的值,和值3(在其他表的主鍵)。如果我加入這些值,我最終會再次獲得三排。我必須做類似的事情還是使用數據透視表?

我終究要沿着這一線的東西:

Account Id        Value1Table.Color Value2Table.Color Value3Table.Color Value1Table.Size Value2Table.Size 
6D68E2C9-4BF8-433B-8BC3-57D87348D034 Blue     Red     Orange    Large    Small 
+0

這裏是一個偉大的地方開始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/發佈時,您的查詢看起來應該會產生您正在尋找的結果。但我懷疑事實並非如此。我們需要一些細節才能提供幫助。 –

+0

爲什麼不使用JOIN + GROUP BY子句?你介意分享你的餐桌嗎? –

回答

0

前回轉執行查找

SELECT AccountID, 
     Value1 = MAX(CASE WHEN RN = 1 THEN Value END), 
     Value2 = MAX(CASE WHEN RN = 2 THEN Value END), 
     Value3 = MAX(CASE WHEN RN = 3 THEN Value END) 
FROM (SELECT AccountID, 
      Value = othertable.color. 
      RN = ROW_NUMBER() OVER (PARTITION BY AccountID ORDER BY Value) 
     FROM @myTable t JOIN 
      othertable ot 
      ON ot.value = t.value 
    ) T 
GROUP BY AccountID; 
+0

我認爲這可能有效。我將不得不再次更新我的問題。我將從這些表格中尋找3-4列。在擺動之前我只是將它們全部歸還? – ferensilver