/ / SQL - Ak je vo vnútri návratových hodnôt iné? - server sql, tsql

SQL - Ak je iný vo návratových hodnotách? - sql-server, tsql

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ď č. 1

skú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.