4

UNION ALL 結果セットで集計関数を使用するにはどうすればよいですか

例えば

SELECT A,B FROM MyTable
UNION ALL
SELECT B,C FROM MYAnotherTable

結果セットは

    A  B
--------------
    1  2
    3  4
    4  5
    6  7

取得しようとすると、MAX(A)が返されます3。欲しい6

取得しようとすると、MAX(B)が返されます4。欲しい7

以外Max()に、ユーザーが定義した別の集計関数を取得できますか?

例えば:

( SELECT TOP 1 A WHERE B=5)

実際のケースはこちら

4

3 に答える 3

3

この方法を試してください:

select max(A)
from(
      SELECT A,B FROM MyTable
      UNION ALL
      SELECT B,C FROM MYAnotherTable
    ) Tab

SQL フィドルのデモ

Aが varchar の場合 (以下のコメントで述べました)、次の方法を試してください。

select max(A)
from(
      SELECT cast(A as int) as A,B FROM MyTable
      UNION ALL
      SELECT B,C FROM MYAnotherTable
    ) Tab

TOP 1

select max(A)
from(
      SELECT top 1 cast(A as int) as A,B FROM MyTable
      UNION ALL
      SELECT B,C FROM MYAnotherTable
    ) Tab
于 2013-07-09T11:43:24.033 に答える
-1

これを試して

DECLARE @a TABLE (a int, b int)
INSERT @a 
VALUES (1,2), (3,4)
DECLARE @b TABLE (b int, c int)
INSERT @b 
VALUES (4, 5),(6,7)

;WITH cte AS (
    SELECT A,B FROM @a
    UNION ALL
    SELECT B AS A,C AS B FROM @b
) SELECT MAX (a), MAX(b)

FROM cte
于 2013-07-09T11:57:24.127 に答える