3

別のSQLクエリでSQLクエリを実行することは可能ですか?UnionAll句を使用して多くの列を1つにコンパイルするSQLクエリがあります。group句を使用する必要がありますが、それは不可能であることがわかります。これに対して別のSQLクエリを実行する方法はありますか?

クエリ:

Select Ins1 as Insurance

From InsAuth2
WHERE Ins1 IS NOT NULL
Group By Ins1
Union All
Select Ins2 as Insurance
From InsAuth2
WHERE Ins2 IS NOT NULL
Group By Ins2
Union All
Select Ins3 as Insurance
From InsAuth2
WHERE Ins3 IS NOT NULL
Union All
Select Ins4 as Insurance
From InsAuth2
WHERE Ins4 IS NOT NULL
Union All
Select Ins5 as Insurance
From InsAuth2
WHERE Ins5 IS NOT NULL

このコンパイルされた列から一意の値を選択できるようにする必要があります。すべてのステートメントでgroupbyを使用できますが、元の列からのみ一意の値が返されます。ある列に固有の値が別の列にも固有である場合、コンパイルされた列がすべての一意の値を持つことができない可能性があります。したがって、これを操作する別のSQLクエリが必要です。助言がありますか?

4

4 に答える 4

6

内部クエリを使用します。

SELECT *
FROM
(
    YourQueryHere
) Inn
GROUP BY YourColumnHere
于 2012-07-25T14:54:53.127 に答える
3

派生テーブルを使用し、個別に:

select distinct Insurance
from
(
  Select Ins1 as Insurance
  From InsAuth2
  WHERE Ins1 IS NOT NULL
  Union All
  Select Ins2 as Insurance
  From InsAuth2
  WHERE Ins2 IS NOT NULL
  ...
) table_alias
于 2012-07-25T14:54:12.783 に答える
3

UNION代わりに使用すると、UNION ALL重複が除外されます

Select Ins1 as Insurance
From InsAuth2
WHERE Ins1 IS NOT NULL
Group By Ins1
Union
Select Ins2 as Insurance
From InsAuth2
WHERE Ins2 IS NOT NULL
Group By Ins2
Union
Select Ins3 as Insurance
From InsAuth2
WHERE Ins3 IS NOT NULL
Union
Select Ins4 as Insurance
From InsAuth2
WHERE Ins4 IS NOT NULL
Union
Select Ins5 as Insurance
From InsAuth2
WHERE Ins5 IS NOT NULL
于 2012-07-25T14:59:45.403 に答える
0

UNIONALLの代わりにUNIONを使用してみてください

ありがとう

于 2016-08-10T08:54:28.147 に答える