Aru*_*nam 0 sql nested view case reporting-services
我在server1上有原始查询,需要在服务器2上创建它。我能够创建View,但是在执行该视图时,在CASE语句中遇到错误,如下所示:
Error:
Msg 8180, Level 16, State 1, Line 1
Statement(s) could not be prepared.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Qry1097'.
Msg 125, Level 15, State 4, Line 1
Case expressions may only be nested to level 10.
Run Code Online (Sandbox Code Playgroud)
查询:SELECT
ID, Forename, Surname,
Code, Description,
Grade, Dept,
Course, Title,
CASE WHEN Code IN ('VJ028') THEN 'FUNCTIONAL SKILLS - LEVEL 1 & LEVEL 2'
WHEN Code IN ('VE203', '22877C') THEN 'WRITING - LEVEL 2'
WHEN Code IN ('VE202', 'VE201') THEN 'READING - LEVEL 2'
WHEN Code = 'VE201' THEN 'SPEAKING & LISTENING'
WHEN Code = 'RU243' THEN 'ENTRY LEVEL'
WHEN Code IN ('22875C') THEN 'E2 FUNCTIONAL SKILLS SPEAKING & LISTENING'
WHEN Code IN ('22876C', '22879C') THEN 'E2 FUNCTIONAL SKILLS READING'
WHEN Code = '22877C' THEN 'E2 FUNCTIONAL SKILLS WRITING'
WHEN Code = '22878C' THEN 'E3 FUNCTIONAL SKILLS SPEAKING & LISTENING'
WHEN Code = '22880C' THEN 'E3 FUNCTIONAL SKILLS WRITING'
WHEN Code= '22879C' THEN 'E3 FUNCTIONAL SKILLS READING'
WHEN Code = 'VE102' THEN 'READING-LEVEL 1'
WHEN Code = 'VE103' THEN 'WRITING-LEVEL 1'
WHEN Code = '3748-01' THEN 'FUNCTIONAL SKILLS ENGLISH'
WHEN Code = 'VE101' THEN 'SPEAKING & LISTENING-LEVEL 1'
END AS SubjectCode,
CASE
WHEN Description = 'FUNCTIONAL SKILLS - ENGLISH (LEVEL 1 & LEVEL 2)' THEN 'Overall'
WHEN Description = 'ENGLISH (ENTRY LEVEL)' THEN 'Overall'
WHEN Description = 'FUNCTIONAL SKILLS ENGLISH' THEN 'Overall'
WHEN Description = 'READING -ENGLISH LEVEL 2' THEN 'Reading'
WHEN Description = 'READING- ENGLISH (LEVEL 1 )' THEN 'Reading'
WHEN Description = 'E2 ENGLISH FUNTIONAL SKILLS READING' THEN 'Reading'
WHEN Description = 'E3 ENGLISH FUNTIONAL SKILLS READING' THEN 'Reading'
WHEN Description = 'WRITING- ENGLISH (LEVEL 1 )' THEN 'Writing'
WHEN Description = 'WRITING- ENGLISH LEVEL 2' THEN 'Writing'
WHEN Description = 'E2 ENGLISH FUNCTIONAL SKILLS WRITING' THEN 'Writing'
WHEN Description = 'E3 ENGLISH FUNCTIONAL SKILLS WRITING' THEN 'Writing'
WHEN Description = 'SPEAKING & LISTENING- ENGLISH LEVEL 2' THEN 'Speaking & Listening'
WHEN Description = 'SPEAKING & LISTENING- ENGLISH (LEVEL 1)' THEN 'Speaking & Listening'
WHEN Description = 'E3 ENGLISH FUNCTIONAL SKILLS SPEAKING AND LISTENING' THEN 'Speaking & Listening'
WHEN Description = 'E2 ENGLISH FUNCTIONAL SKILLS SPEAKING AND LISTENING' THEN 'Speaking & Listening'
END AS CourseType,
CASE WHEN Act_Grade = 'PA' THEN 'Pass'
WHEN e.EXSS_Act_Grade = 'FL' THEN 'Fail'
WHEN e.EXSS_Act_Grade = 'XA' THEN 'Not Attended'
END AS Grade
FROM Table
Run Code Online (Sandbox Code Playgroud)
错误:
案例表达式只能嵌套到级别10。
我该如何纠正?
解析器看不到深度超过10层的嵌套CASE语句(尽管它确实将其传递给本地查询编译的后续阶段)。
尽管可能的解决方法可能是这样的:
SELECT COALESCE(
CASE SUBSTRING(p.Name, 1, 1)
WHEN 'a' THEN '1'
WHEN 'b' THEN '2'
WHEN 'c' THEN '3'
WHEN 'd' THEN '4'
WHEN 'e' THEN '5'
WHEN 'f' THEN '6'
WHEN 'g' THEN '7'
WHEN 'h' THEN '8'
WHEN 'i' THEN '9'
ELSE NULL
END,
CASE SUBSTRING(p.Name, 1, 1)
WHEN 'j' THEN '10'
WHEN 'k' THEN '11'
END)
FROM dbo.AdventureWorks.Sample AS p
Run Code Online (Sandbox Code Playgroud)