我想在case语句中返回多行。可能吗?还是有其他方法可以做到吗?
select
case
when 3 = 1
then (select orderid from order_master where noOfInstallment = installmentPaid)
else
(select orderid from order_master where noOfInstallment <> installmentPaid)
END
两个子查询都返回多行。现在上面的查询显示以下错误。
子查询返回的值超过1。子查询遵循=,!=,&lt;,&lt; =,&gt;,&gt; =或使用子查询时不允许这样做 作为表达。
答案 0 :(得分:2)
SQL Server中的CASE 不是流控制语句(它与C#中的switch
语句不同) - 它只是用于返回几个可能值中的一个。
您需要在T-SQL中使用IF
语句
IF 3 = 1
select orderid from order_master where noOfInstallment = installmentPaid
ELSE
select orderid from order_master where noOfInstallment <> installmentPaid
或类似的东西。
答案 1 :(得分:0)
您没有以正确的方式使用案例陈述,请在documentation处取消。
您可以使用以下查询进行管理:
select orderid,
case
when (noOfInstallment = installmentPaid) then
'equal'
else
'not equal'
END
from order_master
答案 2 :(得分:0)
我得到了解决方案。
SELECT o.* FROM Order_Master as o Where
(
((@paymentStatus = 0) AND (o.noOfInstallment <> o.installmentPaid))
OR
((@paymentStatus=1) AND (o.noOfInstallment = o.installmentPaid))
)