T-SQL IF ELSE变量声明

时间:2013-06-06 12:47:13

标签: asp.net sql-server tsql

我试图用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'.

2 个答案:

答案 0 :(得分:4)

您不能在单个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] 

答案 1 :(得分:0)

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