Отформатируйте вывод в SQL так, чтобы несколько значений столбца b были связаны с одним значением столбца a - PullRequest
0 голосов
/ 13 декабря 2010

Это мой оператор выбора:

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  

Мне бы хотелось, чтобы каждое имя появлялось в первом столбце только один раз.Любая помощь или идея с благодарностью.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

, если появится только один класс.

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 голосов
/ 13 декабря 2010

Поскольку все строки независимы друг от друга, ни одна строка не может знать, является ли она первой.

То, что вы могли бы сделать, - это GROUP BY Name и собрать все 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...