我正在尝试获取项目总数,并使用case语句对它们进行分类。但是,我一直在重复重复这些项(现在归为“ inv”)(例如,“衣服”重复了4次,每次计数为1,而不是总数为4的一次)-如何获得摆脱那个?我在下面列出了期望的结果。
这是我的桌子:
表格BOX1
ITEM_NO ITEM DATE
===================================
3130C MARVEL_SHIRT 01-JAN-17
1845C SPONGEBOB_BOXERS 03-DEC-18
A900C CK_COAT 04-DEC-18
A988C RIDER_JEANS 11-JAN-19
L350T BARBIE 23-NOV-18
L129T LEGO 09-OCT-18
LXZYT BATMAN_FIG1 12-JAN-19
我的代码:
select (case substr (item_no,5,1)
when 'C' then 'clothes'
when 'T' then 'toys' else 'misc' end) inv,
count(item_no) total
from box1 where date <= sysdate
group by item
所需结果:
INV TOTAL
===============
CLOTHES 4
TOYS 3
答案 0 :(得分:1)
您需要按类别分组。
SELECT CASE substr(item_no, 5, 1)
WHEN 'C' THEN
'clothes'
WHEN 'T' THEN
'toys'
ELSE
'misc'
END inv,
count(item_no) total
FROM box1
WHERE date <= sysdate
GROUP BY CASE substr(item_no, 5, 1)
WHEN 'C' THEN
'clothes'
WHEN 'T' THEN
'toys'
ELSE
'misc'
END;
答案 1 :(得分:1)
由于表达的性质,您只需要汇总substr()
:
select (case substr(item_no, 5, 1)
when 'C' then 'clothes'
when 'T' then 'toys'
else 'misc'
end) inv,
count(item_no) total
from box1
where date <= sysdate
group by substr(item_no, 5, 1);