私は別の組合が参加したい 2 つの一連の組合を持っています。最初のものには 3Selects
があり、2 番目のものには 2 つの異なる がありSelects
ます。
Select id, min(value)
from table1 t1
join (Select id, value
Union
Select id, value
Union
Select id, value) as foo
on foo.id=t1.id
Group by id
Select id, max(value)
from table1 t1
join (Select id, value
Union
Select id, value) as bar
on bar.id=t1.id
Group by id
この 2 つの結合を試みましたが、かなり複雑になりました。私の最大の問題は、エイリアスにあります。2 つ目は、値の名前を付けたい値の列にリンクされたケースです。
Select (alias).id,
Case
When foo.value= 0 or bar.value=1 THEN 1
Else 0
End as value
from table1 t1
Join (Select id, min(value)
from table1 t1
join (Select id, value
Union
Select id, value
Union
Select id, value) as foo
on foo.id=t1.id
Group by id
UNION
Select id, max(value)
from table1 t1
join (Select id, value
Union
Select id, value) as bar
on bar.id=t1.id
Group by id) as (alias)
on ??.id=??.id
書くべきだと思う方法でケースを書きましたが、通常、同じ名前の列が複数ある場合、SQL はそれをあいまいであると述べます。UNION
またはを使用する必要があるかどうかはまだわかりませんがINTERSECT
、どちらも同じように行われると思います。これにどのように対処すればよいですか?