簡體   English   中英

從多列中選擇MAX和MIN

[英]Select MAX and MIN from multiple columns

我可以從同一個表的多個列中獲得MAX()MIN()

Select
    max(Maximo) as Maximo,
    min(Minimo) as Minimo
From(
    SELECT
        MAX(COLUMN1) AS Maximo,
        MIN(COLUMN2) AS Minimo
    FROM TABLE1
    WHERE
        COND1= 'A' and
        COND2= 'X'
    UNION
    SELECT
        MAX(COLUMN3) AS Maximo,
        MIN(COLUMN4) AS Minimo
    FROM TABLE1
    WHERE
        COND1= 'A' and
        COND2= 'X'
    UNION
    SELECT
        MAX(COLUMN5) AS Maximo,
        MIN(COLUMN6) AS Minimo
    FROM TABLE1
    WHERE
        COND1= 'A' and
        COND2= 'X'
    UNION
    SELECT
        MAX(COLUMN7) AS Maximo,
        MIN(COLUMN8) AS Minimo
    FROM TABLE1
    WHERE
        COND1= 'A' and
        COND2= 'X'
) x

但這看起來很丑。 所以我正在嘗試使用UNPIVOT

SELECT
    MIN (v) AS MinValue,
    MAX (v) AS MaxValue
FROM
    TABLE1 UNPIVOT (
        v FOR nValue IN (
            COLUMN1,
            COLUMN2,
            COLUMN3,
            COLUMN4,
            COLUMN5,
            COLUMN6,
            COLUMN7,
            COLUMN8
        )
    ) AS U

我收到以下錯誤:

[Err] 42000 - [SQL Server]Incorrect syntax near the keyword 'FOR'.

應該是什么? 謝謝。

似乎您可以使用CROSS APPLYVALUES輕松編寫此代碼,以獲得最終結果:

SELECT Maximo = max(maxVal), 
  Minimo = min(minVal)
FROM table1 t
CROSS APPLY
(
  VALUES
    (COLUMN1, COLUMN2),
    (COLUMN3, COLUMN4),
    (COLUMN5, COLUMN6),
    (COLUMN7, COLUMN8)
) c (maxVal, minVal)
WHERE t.COND1= 'A'
  AND t.COND2= 'X';

請參閱帶有演示的SQL Fiddle 這樣便取消了成對的列,然后您就可以獲取每列的max / min

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM