sql IF ELSE变量声明



我试图用IF ELSE语句构建一个记录集,我在MSDN上读了很多,但我似乎无法得到这个工作。上面的代码不工作,主要是因为语法错误,我把它包含在这里给我一个我试图做什么的一般想法。

SELECT FagNavn, Ugedag, frakl, tilkl, 
IF Ugedag = 'Mandag'
BEGIN
    (frakl + ' - ' + tilkl) AS startSlutMandag
END
ELSE
startSlutMandag = ''
IF Ugedag = 'Tirsdag'
BEGIN
    (frakl + ' - ' + tilkl) AS startSlutTirsdag
END
ELSE
    startSlutTirsdag = ''
IF Ugedag = 'Onsdag'
BEGIN
    (frakl + ' - ' + tilkl) AS startSlutOnsdag
END
ELSE
    startSlutOnsdag = ''
IF Ugedag = 'Torsdag'
BEGIN
    (frakl + ' - ' + tilkl) AS startSlutTorsdag
END
ELSE
    startSlutTorsdag = ''
IF Ugedag = 'Fredag'
BEGIN
    (frakl + ' - ' + tilkl) AS startSlutFredag
END
ELSE
    startSlutFredag = ''
FROM [VisWebHoldSkema] 

下面是数据库中记录的示例:

FagNavn                      Ugedag    frakl    tilkl
-----------------------------------------------------
Engelsk, G                   Torsdag   13:00    13:50
Dansk som andetsprog, G      Mandag    15:25    16:15
Religion                     Mandag    17:00    17:50
Engelsk, E                   Torsdag   12:20    13:05
Religion                     Tirsdag   10:10    11:00
Religion                     Tirsdag   11:25    12:15
Dansk                        Mandag    09:10    10:00
Matematik                    Torsdag   09:10    10:00
Matematik                    Fredag    12:25    13:15

我想要的是这样的记录集:

FagNavn                      startSlutMandag    startSlutTirsdag    startSlutOnsdag    startSlutTorsdag    startSlutFredag    
--------------------------------------------------------------------------------------------------------------------------
Engelsk, G                   13:00 - 13:50
Dansk som andetsprog, G                          15:25 - 16:15
Religion                     17:00 - 17:50
Engelsk, E                                                           12:20 - 13:05
Religion                                                                                                    10:10 - 11:00
Religion                                         11:25 - 12:15
Dansk                                                                09:10 - 10:00
Matematik                                                                                                   09:10 - 10:00
Matematik                    12:25    13:15

请,任何帮助都是非常感激的。

更新
SELECT FagNavn, Ugedag, frakl, tilkl, 
Case When Ugedag = 'Mandag' 
     Then frakl + ' - ' + tilkl
     Else '' End AS startSlutMandag,
Case When Ugedag = 'Tirsdag' 
     Then frakl + ' - ' + tilkl
     Else '' End AS startSlutTirsdag
Case When Ugedag = 'Onsdag' 
     Then frakl + ' - ' + tilkl
     Else '' End AS startSlutOnsdag
Case When Ugedag = 'Torsdag' 
     Then frakl + ' - ' + tilkl
     Else '' End AS startSlutTorsdag
Case When Ugedag = 'Fredag' 
     Then frakl + ' - ' + tilkl
     Else '' End AS startSlutFredag
FROM [VisWebHoldSkema] 
Msg 156, Level 15, State 1, Line 8 Incorrect syntax near the keyword 'Case'.

您不能在单个SQL Select语句中使用If...Else。使用Case,如

SELECT FagNavn, Ugedag, frakl, tilkl, 
    Case When Ugedag = 'Mandag'
         Then frakl + ' - ' + tilkl
         Else '' End AS startSlutMandag,
    Case When Ugedag = 'Tirsdag'
         Then frakl + ' - ' + tilkl
         Else '' End  AS startSlutTirsdag
    etc. ...
 FROM [VisWebHoldSkema] 

在SELECT语句中使用CASE语句而不是IF: CASE (Transact-SQL)

最新更新