0

我需要从不同表的两列中获取最大值。例如,来自 schoolorder 和 platterorder 的郊区的最大值。platterorder 有链接到 normalclient 的 clientnumbers,而 schoolorder 有链接到 school 的 clientnumbers。

我有这个:

SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
WHERE NC.CLIENTNO IN
(SELECT PO.CLIENTNO
FROM platterOrder PO
WHERE NC.CLIENTNO = PO.CLIENTNO)
GROUP BY NC.SUBURB
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
WHERE S.CLIENTNO IN
(SELECT S.CLIENTNO
FROM schoolOrder SO
WHERE S.CLIENTNO = SO.CLIENTNO)
GROUP BY S.SUBURB)

但是,这会从拼盘订单中获得最大值,并将其与学校的最大值相结合。我需要的是他们两个一起的最大值。

=================================================

抱歉让这变得如此混乱!

输出应该只有一行。它应该是普通客户和学校客户的最大订单来自的郊区。订单以普通客户的拼盘顺序和学校客户的学校订单列出。所以它是两个没有直接关系的表的最大值。

希望能澄清一点!

4

1 回答 1

4

如果我正确理解了您的问题,则无需使用 a ,GROUP BY因为您想要MAX该字段。我还更改了您的语法以使用 aJOIN而不是IN,但IN应该工作相同:

SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
    JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
    JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO

在不了解您的表结构和查看示例数据的情况下,我建议MAX从. 可能有更好的方法,但很难从你的问题中推断出来:UNIONsubqueryJOINs

SELECT MAX(Suburb)
FROM (
    SELECT MAX (NC.SUBURB) AS SUBURB
    FROM normalClient NC
        JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
    UNION
    SELECT MAX (S.SUBURB)
    FROM school S
        JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO
) T
于 2013-06-02T12:36:17.250 回答