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 に答える