在下面的查询中,我试图过滤类型值为“ABC”和“XYZ”的记录。
每个 ca_id 最多可以有 3 种类型。(ABC、XYZ 和 '')
而且我必须得到一种空类型,为此我使用联合。
问题是当我使用联合并选择前 1 ..我在任何时候只为一个 ca_id 获得 3 种类型。其余情况有 2 种类型。(ABC 和 XYZ)
有人可以建议如何为每个 ca_id 记录获取空类型。
谢谢
select lo_id,ca_id,Type,Status,Category
from (
select lo_id,ca_id,Type,Status,Category
from (
select distinct ln.lo_id,cast.ca_id, Type,Status,
'Category'= case when Type='ABC' then 'ABC'
when Type='XYZ' then 'XYZ' else ' ' End
FROM ln
INNER JOIN cast ON cast.ca_id = ln.ca_id
INNER JOIN Type ON Type.TypeId = cast .TypeId
) as Q1
where Category in ('ABC','XYZ')
union
select top 1 lo_id,ca_id,Type,Status,(select Category where Category in (' ',null))
from (
select distinct ln.lo_id,cast.ca_id, Type,Status,
'Category'= case when Type='ABC' then 'ABC'
when Type='XYZ' then 'XYZ' else ' ' End
FROM ln
INNER JOIN cast ON cast.ca_id = ln.ca_id
INNER JOIN Type ON Type.TypeId = cast .TypeId
) as Q2
) as Q3