0

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

2 回答 2

4

您不能If...Else在单个 SQL Select 语句中使用。为此使用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] 
于 2013-06-06T12:52:31.820 回答
0

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

于 2013-06-06T12:53:25.587 回答