有解决办法吗?
SELECT
CASE @GROUP
WHEN 'A' THEN GRADE1, GRADE2
WHEN 'B' THEN GRADE1, GRADE4, GRADE5
WHEN 'C' THEN GRADE3, GRADE6
WHEN 'D' THEN GRADE2, GRADE5, GRADE6
END
FROM QuizBeeRep
我希望有多个THEN,以便根据@GROUP过滤要选择的列。 请帮忙。 提前谢谢。
答案 0 :(得分:0)
您不能以这种方式使用case
表达。
或者你也可以这样做:
if @GROUP = 'A'
select GRADE1, GRADE2
FROM QuizBeeRep
else if @GROUP = 'B
select GRADE1, GRADE4, GRADE5
FROM QuizBeeRep
... and so on
答案 1 :(得分:0)
如果你事先知道列的数量(并且它是固定的),你可以做这样的事情(不使用动态SQL)。如果列具有相同的dataype,则它可以工作(否则,在某些情况下,您应该添加适当的CAST):
SELECT
CASE @GROUP
WHEN 'A' THEN GRADE1
WHEN 'B' THEN GRADE1
WHEN 'C' THEN GRADE3
WHEN 'D' THEN GRADE2
END AS COL1
, CASE @GROUP
WHEN 'A' THEN GRADE2
WHEN 'B' THEN GRADE4
WHEN 'C' THEN GRADE6
WHEN 'D' THEN GRADE5
END AS COL2
,CASE @GROUP
WHEN 'A' THEN NULL
WHEN 'B' THEN GRADE5
WHEN 'C' THEN NULL
WHEN 'D' THEN GRADE6
END AS COL3
FROM QuizBeeRep