我尝试做的是通过使用WHERE LienType =' No Private'来缩小from子句中的查询范围。来自case语句创建的Private Benefits别名。我该怎么办?
SELECT DISTINCT ClientId
,ClientFirstName
,ClientLastName
, Case when (select COUNT(*)
from FullProductView fpvb
where fpvb.clientid=fpva.clientid
and fpvb.Lientype ='Private Lien') = 0 then 'No Private'
else 'Private Yes' end 'Private Benefits'
from fullproductview fpva
WHERE CaseId = 420
Order By 'Private Benefits'
答案 0 :(得分:1)
你不能直接。在WHERE子句上使用计算字段的唯一两个选项是使用计算字段或子查询创建视图。我认为创建视图是一种简单的方法。
修改强>
试试这个:
CREATE VIEW vw_MyView AS
SELECT DISTINCT ClientId
,ClientFirstName
,ClientLastName
, Case when (select COUNT(*)
from FullProductView fpvb
where fpvb.clientid=fpva.clientid
and fpvb.Lientype ='Private Lien') = 0 then 'No Private'
else 'Private Yes' end 'Private Benefits'
from fullproductview fpva
WHERE CaseId = 420
然后你可以这样做:
SELECT * from vw_MyView WHERE LienType = 'No Private' Order By 'Private Benefits'
在字段名称上使用空格也不是一个好主意。您需要检查这是否适用于您的数据库引擎(您没有提及)。