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 回答
0
CREATE TABLE    #Transaction (
                TransactionID INT, 
                ProductID INT, 
                TransactionDate datetime
)
INSERT INTO     #Transaction (
                TransactionID, 
                ProductID,
                TransactionDate
)
SELECT          TransactionID, 
                ProductID,
                TransactionDate
FROM            [Production].[TransactionHistoryArchive]
UNION
SELECT          TransactionID, 
                ProductID,
                TransactionDate
FROM            [Production].[TransactionHistory]
于 2020-06-09T05:39:36.597 回答
-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 回答