SELECT
subj.SubjectID AS [ID],
subj.SubjectDescription AS [Subject],
enrol.StuSubjEnrolmentID AS [IsEnrol]
FROM [PATHWAYS].[Subjects] AS [subj]
LEFT JOIN
[STUDENT].[StuSubjEnrolment] AS [enrol]
ON subj.SubjectID = enrol.SubjectID
LEFT JOIN
[STUDENT].[Student] AS [stu]
ON enrol.StuID = stu.StuID
AND stu.StuID = @stuID
Ahojte chlapci, vie mi niekto v tomto prosím poradiť? Vopred ďakujem. Som v tomto naozaj bezradný.
Ako môžem napísať toto vyhlásenie tak, že ....
Kedy IsEnrol je nie null, vráti 0. Inak vráti 1? Chcem, aby konkrétny stĺpec zobrazoval iba 1 alebo 0.
odpovede:
1 pre odpoveď č. 1skúste to
SELECT
subj.SubjectID AS [ID],
subj.SubjectDescription AS [Subject],
CASE WHEN enrol.StuSubjEnrolmentID is not null then 0 else 1 end as AS [IsEnrol]
FROM [PATHWAYS].[Subjects] AS [subj]
LEFT JOIN [STUDENT].[StuSubjEnrolment] AS [enrol]
ON subj.SubjectID = enrol.SubjectID
LEFT JOIN [STUDENT].[Student] AS [stu]
ON enrol.StuID = stu.StuID
AND stu.StuID = @stuID
1 pre odpoveď č. 2
Za predpokladu, že používate SQL Server 2012 alebo novší, môžete použiť IIF
funkcia-
SELECT
subj.SubjectID AS [ID],
subj.SubjectDescription AS [Subject],
iif(enrol.StuSubjEnrolmentID is null,1,0) AS [IsEnrol]
FROM [PATHWAYS].[Subjects] AS [subj]
LEFT JOIN
[STUDENT].[StuSubjEnrolment] AS [enrol]
ON subj.SubjectID = enrol.SubjectID
LEFT JOIN
[STUDENT].[Student] AS [stu]
ON enrol.StuID = stu.StuID
AND stu.StuID = @stuID
Ak používate verziu servera SQL Server staršiu ako 2012, potom Case
metóda vyhlásenia z príspevku @ dejan87 by bola najlepším riešením.