[英]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 APPLY
和VALUES
輕松編寫此代碼,以獲得最終結果:
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.