2010-12-13 65 views
0

這是我的select語句:格式輸出,B列的多個值與列的一個值相關聯的

SELECT lastName + ',' + firstName as Name, 
     classNumber 
FROM STUDENT 
RIGHT JOIN ENROLL ON Enroll.stuid = Student.stuid 

和輸出:

name   classnumber 
-------------------------- 
Smith,Tom  ART103A 
Smith,Tom  HST205A 
Chin,Ann  ART103A 
Chin,Ann  CSC201A 
Chin,Ann  MTH103A 
McCarthy,Owen ART103A 
McCarthy,Owen MTH103C 
Rivera,Jane CSC201A 
Rivera,Jane MTH101B 

我想它以便每個名稱只出現在第一列一次。任何幫助或想法非常感謝。

+1

什麼版本的SQL(MS,我等)?並且沒有任何'[code]'標籤,但是問題表單中有一個按鈕,您可以在選擇文本後使用它。 ;-) - TY OMG Ponies&Michael進行編輯。 – 2010-12-13 02:18:02

+0

我正在使用SQL Server 2008抱歉,忘記把那部分放在那裏。 – Mike 2010-12-13 02:21:58

+0

你不能在sql端創建組,但是你可以在你的界面上使用數據網格來執行這個操作,使用Group列 – 2010-12-13 03:16:36

回答

0

由於行是彼此獨立的,所以沒有行可以知道它是否是第一個行。

你可以做的就是GROUP BY名稱並把所有的classNumbers在一起,像這樣的列表:

SELECT lastName + ',' + firstName AS Name, 
     GROUP_CONCAT(classNumber SEPARATOR '\n') AS classNumbers 
FROM student 
RIGHT JOIN Enroll ON (Student.stuid = Enroll.stuid) 
GROUP BY Name 
+0

'GROUP_CONCAT'只用於MySQL - OP闡明瞭他們正在使用SQL Server。 – 2010-12-13 02:24:21

+0

然後我會保留我的答案,並另外提供這兩個鏈接。 ;)http://explainextended.com/2010/06/21/group_concat-in-sql-server/和http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-ms -sql-server-2005 – AndreKR 2010-12-13 02:26:26

0

如果只有一個類將出現。

SELECT lastName + ',' + firstName as Name, classNumber 
FROM STUDENT 
RIGHT JOIN 
(select Student.stuid as stuid, min(classNumber) as ClassNumber 
from ENROLL Enroll inner Join Student 
ON (Student.stuid = Enroll.stuid) group by Student.stuid) AS NewEnrol 
ON NewEnroll.stuid = Student.stuid 

或者

SELECT lastName + ',' + firstName as Name,Min(classNumber) 
FROM STUDENT 
RIGHT JOIN ENROLL ON Enroll.stuid = Student.stuid 
Group By lastname+','+firstname 
+0

謝謝大家的快速回復。我正在尋找輸出看起來完全像它在操作,但重複的名稱已消失,以消除混淆,這是兩個同名的人它是一個人採取多個類 – Mike 2010-12-13 02:51:34

相關問題