2013-10-04 49 views
0

如果我有一個表如下:集團多行到一個不使用COALESCE

Date Name Number Period1 Period2 Period3 
------------------------------------------------------- 
23-Oct Barry 453  NULL  NULL  Room 4 
23-Oct Barry 453  NULL  Room 8  NULL 
24-Oct Barry 453  Room 2  NULL  NULL 
23-Oct Mary 139  Room 3  NULL  Room 4 
23-Oct Mary 139  NULL  Room 6  NULL 
24-Oct Mary 139  NULL  NULL  Room 9 
24-Oct Mary 139  Room 1  NULL  NULL 

我怎樣才能最好的查詢它,從而得到下面的輸出,即按日期,人物和和時間進行分組?

Date Name Number Period1 Period2 Period3 
------------------------------------------------------- 
23-Oct Barry 453  NULL  Room 8  Room 4 
23-Oct Mary 139  Room 3  Room 6  NULL 
24-Oct Barry 453  Room 2  NULL  NULL 
24-Oct Mary 139  Room 1  NULL  Room 9 
+0

我認爲第三列是應該名爲 「Period3」? –

+0

問題很模糊。如果任何期間欄的值不止一個,您想要哪一個? –

+0

是的,它的意思是期間3.每個人每個日期每個人只會有1個值,儘管我已經意識到你可以在varchars上使用MAX()和MIN()...抱歉。 – Widor

回答

1
SELECT Date, 
     Name, 
     Number, 
     MAX(Period1) AS Period1, 
     MAX(Period2) AS Period2, 
     MAX(Period3) AS Period3 
FROM T 
GROUP BY Date, 
      Name, 
      Number 
+0

假設他想要最大值當然。我覺得這個問題不清楚。 –

+0

@DanBracuk - 樣本數據每組只有一個值,所以'MAX'或'MIN'是任意的。 –

+0

謝謝 - 我是個白癡。在我的腦海中,MAX()和MIN()不能用於varchar字段! – Widor