如何在Oracle PL SQL中将列名显示为行
我有一个查询来获取某些列的计数。 我得到的输出没有错误,但我需要以不同的方式。 有人能帮我在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,
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函数来完成上面的输出吗。?