raj*_*aja 5 sql oracle pivot-table
我是Oracle的新手.我有一个Oracle表有三列:serialno,item_category和item_status.在第三列中的行具有值serviceable,under_repair或 condemned.
我想使用count来运行查询,以显示有多少是可维护的,有多少是在修复,有多少是针对每个项目类别被谴责的.
我想运行类似的东西:
select item_category
, count(......) "total"
, count (.....) "serviceable"
, count(.....)"under_repair"
, count(....) "condemned"
from my_table
group by item_category ......
Run Code Online (Sandbox Code Playgroud)
我无法在计数内运行内部查询.
这是我希望结果集看起来像:
item_category total serviceable under repair condemned
============= ===== ============ ============ ===========
chair 18 10 5 3
table 12 6 3 3
Run Code Online (Sandbox Code Playgroud)
Noe*_*oel 15
您可以在COUNT函数中使用CASE或DECODE语句.
SELECT item_category,
COUNT (*) total,
COUNT (DECODE (item_status, 'serviceable', 1)) AS serviceable,
COUNT (DECODE (item_status, 'under_repair', 1)) AS under_repair,
COUNT (DECODE (item_status, 'condemned', 1)) AS condemned
FROM mytable
GROUP BY item_category;
Run Code Online (Sandbox Code Playgroud)
输出:
ITEM_CATEGORY TOTAL SERVICEABLE UNDER_REPAIR CONDEMNED
----------------------------------------------------------------
chair 5 1 2 2
table 5 3 1 1
Run Code Online (Sandbox Code Playgroud)
这是一个非常基本的"分组依据"查询.如果您搜索它,您会找到大量 有关如何使用它的 文档.
对于您的具体情况,您需要:
select item_category, item_status, count(*)
from <your table>
group by item_category, item_status;
Run Code Online (Sandbox Code Playgroud)
你会得到这样的东西:
item_category item_status count(*)
======================================
Chair under_repair 7
Chair condemned 16
Table under_repair 3
Run Code Online (Sandbox Code Playgroud)
根据需要更改列顺序以达到您的目的
| 归档时间: |
|
| 查看次数: |
14132 次 |
| 最近记录: |