如何在Oracle PL SQL中将列名显示为行

如何在Oracle PL SQL中将列名显示为行,sql,oracle,unpivot,Sql,Oracle,Unpivot,我有一个查询来获取某些列的计数。 我得到的输出没有错误,但我需要以不同的方式。 有人能帮我在Oracle Pl/SQL中获得以下输出吗 SELECT SUM (DECODE(COLUMN1,'Y',1,0)) AS COUNT1, SUM (DECODE(COLUMN2,'Y',1,0)) AS COUNT2, SUM (DECODE(COLUMN3,'Y',1,0)) AS COUNT3, SUM (DECODE(COLUMN4,'Y',1,0)) AS COUNT4,

我有一个查询来获取某些列的计数。 我得到的输出没有错误,但我需要以不同的方式。 有人能帮我在Oracle Pl/SQL中获得以下输出吗

SELECT   
SUM (DECODE(COLUMN1,'Y',1,0)) AS COUNT1,  
SUM (DECODE(COLUMN2,'Y',1,0)) AS COUNT2,  
SUM (DECODE(COLUMN3,'Y',1,0)) AS COUNT3,  
SUM (DECODE(COLUMN4,'Y',1,0)) AS COUNT4,  
SUM (DECODE(COLUMN5,'Y',1,0)) AS COUNT5,  
SUM (DECODE(COLUMN6,'Y',1,0)) AS COUNT6   
FROM TABLE_NAME  
WHERE COLUMN7 IN ('X','Y');

 **OUTPUT:**  
-----------------------------------------
COUNT1|COUNT2|COUNT3|COUNT4|COUNT5|COUNT6
-----------------------------------------
5500  | 1245 | 5245 | 5675 | 7845 | 5324
-----------------------------------------

**Required Output**

COUNT1 | 5500  
-------------
COUNT1 | 1245 
-------------
COUNT1 | 5245 
-------------
COUNT1 | 5675 
-------------
COUNT1 | 7845 
-------------
COUNT1 | 5324
-------------

使用
联合

SELECT 'Count1' AS "Count", SUM (DECODE(COLUMN1,'Y',1,0)) AS Total 
FROM TABLE_NAME WHERE COLUMN7 IN ('X','Y')
UNION ALL
SELECT 'Count2' AS "Count", SUM (DECODE(COLUMN2,'Y',1,0)) AS Total 
FROM TABLE_NAME WHERE COLUMN7 IN ('X','Y')
UNION ALL
SELECT 'Count3' AS "Count", SUM (DECODE(COLUMN3,'Y',1,0)) AS Total 
FROM TABLE_NAME WHERE COLUMN7 IN ('X','Y')
UNION ALL
...
但是,如果您有一列要按分组,则只需按该列分组,并在一个查询中使用总和


更新:

您也可以使用
UNPIVOT

SELECT *
FROM
(
  SELECT   
  SUM (DECODE(COLUMN1,'Y',1,0)) AS COUNT1,  
  SUM (DECODE(COLUMN2,'Y',1,0)) AS COUNT2,  
  SUM (DECODE(COLUMN3,'Y',1,0)) AS COUNT3,  
  SUM (DECODE(COLUMN4,'Y',1,0)) AS COUNT4,  
  SUM (DECODE(COLUMN5,'Y',1,0)) AS COUNT5,  
  SUM (DECODE(COLUMN6,'Y',1,0)) AS COUNT6   
  FROM TABLE_NAME  
  WHERE COLUMN7 IN ('X','Y')
)
UNPIVOT
(
  Total
  FOR COL IN(COUNT1,COUNT2,COUNT3,COUNT4,COUNT5,COUNT6)
)

如果使用Oracle,为什么要用sql server和mysql标记这个问题?使用这些标记有问题吗?有些人在这两方面都有知识。所以我添加了那些标签。我们不能在这里这样使用,因为我是这个论坛的新手。你应该只添加与问题相关的标记,而不是吸引更多的人。我删除了PL/SQL标记,因为看起来你不是在寻找存储过程或函数,而是在寻找普通的SQL解决方案。使用或
union
(六次).Count1不是列名,而是别名。@注册我不明白?我没有使用
count1
作为列名,我使用它作为字符串文字。Sry Bro,我现在知道了。非常感谢:)@signup-不客气,如果你觉得答案有用,请接受。当然,兄弟,正如我上面所说的,我是这个论坛的新手,谢谢你让我知道这一点。如果你知道的话,你能帮我使用pivot函数来完成上面的输出吗。?