【发布时间】:2014-06-09 13:40:15
【问题描述】:
我可以通过以下方式从同一个表的多个列中获取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'.
应该是什么?谢谢。
【问题讨论】:
-
您的查询运行良好:检查此SQL Fiddle
-
感谢您抽出宝贵时间@TechGirl。是的,我测试了日期(我的情况)并且它仍然有效(sqlfiddle.com/#!3/18acc/1),但在我的应用程序中它给出了一个错误。嗯,会做更多的测试。谢谢
-
重新设计您的桌子是否为时已晚?规范化它会解决你的问题。
-
@DMason,该表已标准化。我只想得到一个具体的信息。谢谢。
标签: sql sql-server-2008-r2 unpivot