-1

私は別の組合が参加したい 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、どちらも同じように行われると思います。これにどのように対処すればよいですか?

4

1 に答える 1

0

私はこれを正しく読んでいます、おそらくあなたはこのようなものが欲しいでしょう

SELECT ...
FROM ( ... union #1 ) AS u1
JOIN (... union #2 ) AS u2 ON u1.id = u2.id
于 2013-07-05T15:49:37.573 に答える