此tblName表有4列{Date},{Status},{Meal},{Type} 我想在副子查询中使用条件来显示在不同的列中
Select Date, Status, Meal
(Select Type as Special
from tblName
where Type In ('SSS','MMM')),
(Select Type as Normal
from tblName
where Type Not IN ('SSS','MMM'))
From tblName
我收到错误消息
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
答案 0 :(得分:0)
可能是这样的东西:
Select t1.Date, t1.Status, t1.Meal
(t2.Type as Special),
(t3.Type as Normal )
From tblName t1 LEFT JOIN
tblName t2
ON t1.ID=t2.ID
LEFT JOIN
tblName t3
ON t1.ID=t3.ID
where t2.Type Not In ('SSS','MMM')
OR t3.Type In ('SSS','MMM')
OR
条件聚合
Select Date, Status, Meal
(case when Type IN ('SSS','MMM') then Type else null end case)
)Type as Special,
(case when Type NOT IN ('SSS','MMM') then Type else null end case)
)Type as Normal
From tblName
答案 1 :(得分:0)
您正在做的是:对于tblName中的每条记录,从tblName中选择所有类型,其中包含类型(&#39; SSS&#39;,&#39; MMM&#39;)。并且所有这些类型都应在tblName的结果行中显示为一列。当然,这不起作用。您可以做的是为tblName中的每条记录选择一个值。例如max(type)
。
Select Date, Status, Meal,
case when Type In ('SSS','MMM') then 'special' als 'normal' end as kind
From tblName;
或者在两个单独的列中显示类型?
Select Date, Status, Meal,
case when Type In ('SSS','MMM') then Type end as Special,
case when Type Not In ('SSS','MMM') then Type end as Normal
From tblName;