以下のクエリでは、タイプ値が「ABC」および「XYZ」であるレコードをフィルタリングしようとしています。
各ca_idには、最大3つのタイプを含めることができます(ABC、XYZ、および'')
また、ユニオンを使用している空のタイプを1つ取得する必要があります。
問題は、ユニオンを使用してトップ1を選択した場合です..いつでも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