2011-01-18 1 views
0

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

ВЫБОР a.studentID, a.classdetailID, c.course_title
ОТ studentcoursedetails а, б, classdetails курс гр
ГДЕ b.classdetailID = a.classdetailID
И b.courseID = c.courseID
ЗАКАЗАТЬ c.course_title, b.classdetailID

То, что я получаю, это столбец, который показывает идентификатор студента, который прошел курс, идентификатор класса, в котором они находились, и название самого курса. Что-то вдоль этих линий:

5---8----Airline Security Operations 
4---8----Airline Security Operations 
6---8----Airline Security Operations 
4---9----Airline Security Operations 
8---10---Airline Security Operations 
5---10---Airline Security Operations 
1---1----Airport Design and Construction 
4---1----Airport Design and Construction 
2---1----Airport Design and Construction 
1---2----Airport Design and Construction 

Что мне нужно, это таблица, которая показывает мне что-то вроде этого:

course_title    Number of Classes Number of students 
Airline Security Operations 3     4 

Я думал об использовании CASE, но когда я думаю об этом, я просто заблудиться. Буду признателен за вашу помощь.

Ответ благодаря ГБН:

ВЫБОР c.course_title, COUNT (DISTINCT a.studentID) AS "Студенты в курсе", COUNT (DISTINCT a.classdetailID) AS «Total Классы»
ОТ studentcoursedetails
РЕГИСТРИРУЙТЕСЬ classdetails B ON b.classdetailID = a.classdetailID
РЕГИСТРИРУЙТЕСЬ курс С на b.courseID = c.courseID
GROUP BY c.course_title

ответ

3

Вы хотите считать каждый отчетливое вхождение каждого course_title

как это (с синтаксисом SQL Server столбец псевдонима) с надлежащим синтаксисом JOIN

SELECT 
    c.course_title 
    ,COUNT(DISTINCT a.studentID) AS [Number of students that have taken the course] 
    ,COUNT(DISTINCT a.classdetailID) AS [Number of Classes] 
FROM 
    studentcoursedetails a 
    JOIN 
    classdetails b ON b.classdetailID = a.classdetailID 
    JOIN 
    course c ON b.courseID = c.courseID 
GROUP BY 
    c.course_title 
+0

О, ничего себе. Вау, это работает. Как колдовство. Благодарю. Вот как мы используем 'DISTINCT'. –