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