Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以显示表中具有最小值、最大值和平均值的所有列_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

SQL查询以显示表中具有最小值、最大值和平均值的所有列

SQL查询以显示表中具有最小值、最大值和平均值的所有列,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,请你帮我查询下表好吗 A B C D ----------------- 1 5 7 -5 2 6 8 7 我需要垂直列出的所有列的最小值、最大值和平均值。输出应如下所示。十、 X,X只是样本字母,而不是实际的最小值、最大值和平均值 CN Min Max AVG ---------------------- A X X X B X X X C X X X D X X X CN=列名

请你帮我查询下表好吗

  A  B   C   D
-----------------
  1  5   7  -5
  2  6   8  7
我需要垂直列出的所有列的最小值、最大值和平均值。输出应如下所示。十、 X,X只是样本字母,而不是实际的最小值、最大值和平均值

CN Min  Max   AVG 
----------------------
A  X    X     X
B  X    X     X
C  X    X     X 
D  X    X     X
CN=列名


有人能给我这个问题的答案吗?

大概是这样的:

;WITH CTE
(
SELECT 'A' as CN, tbl.a as nbr FROM tbl UNION ALL
SELECT 'B', tbl.b FROM tbl UNION ALL
SELECT 'C', tbl.c FROM tbl UNION ALL
SELECT 'D', tbl.d FROM tbl
)
SELECT
    CTE.CN,
    MAX(CTE.nbr) AS Max,
    MIN(CTE.nbr) AS Min,
    AVG(CTE.nbr) AS Avg
FROM
    CTE
GROUP BY
    CTE.CN
或带有:

请尝试:

SELECT DISTINCT 
    CN, 
    MIN(Col) over (partition by CN) [Min],
    MAX(Col) over (partition by CN) [Max],
    AVG(Col) over (partition by CN) [Avg]
FROM 
   (SELECT *
   FROM YourTable) p
UNPIVOT
   (Col FOR CN IN 
      (A, B, C, D)
)AS unpvt;

显示您的尝试或查询以解决此问题。我对sql查询不熟悉,只是尝试使用sql中的max、min、avg函数,但我期望的输出样式与上述问题的输出不同。我很高兴他们在学校教MS sql。哪所学校?在你的问题中包括你的疑问,这样人们可以帮助你只需添加,我有这样的数据“-1E+30”,它没有给出准确的值。如何避免在没有这些类型的值的情况下计算值?
SELECT DISTINCT 
    CN, 
    MIN(Col) over (partition by CN) [Min],
    MAX(Col) over (partition by CN) [Max],
    AVG(Col) over (partition by CN) [Avg]
FROM 
   (SELECT *
   FROM YourTable) p
UNPIVOT
   (Col FOR CN IN 
      (A, B, C, D)
)AS unpvt;