-1

我有两个系列的工会,我希望加入另一个工会。在第一个中,我有 3 个Selects,在第二个中,我有 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

我试图在这两者之间建立一个联合,但这使事情变得相当复杂。我最大的问题是我的别名。我的第二个案例是链接到我的值列的案例,我希望将其命名为值。

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 将其声明为模棱两可。我仍然不确定是否应该使用UNIONor 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 回答