【发布时间】:2015-09-21 16:26:45
【问题描述】:
我是 SQL 新手,我正在尝试理解 CASE 子句。我想在清点商品时在部门代码旁边的报告中打印部门名称。你能告诉我我做错了什么吗?谢谢。
SELECT
DEPT_C AS "DEPT CODE",
NAME as "DEPT NAME",
TO_CHAR(COUNT(*), '999,999,999,999') AS TOTAL
FROM STORE.DEPT
WHERE CASE
WHEN DEPT_C = 'D01' THEN 'WOMAN ACTIVE WEAR'
WHEN DEPT_C = 'D02' THEN 'WOMAN PLUS SIZE'
WHEN DEPT_C = 'D03' THEN 'JUNIORS'
WHEN DEPT_C = 'D04' THEN 'GIRLS'
WHEN DEPT_C = 'D05' THEN 'INFANTS AND TODDLERS'
WHEN DEPT_C = 'D06' THEN 'ACCESSORIES'
WHEN DEPT_C = 'D07' THEN 'JEWLERY'
WHEN DEPT_C = 'D08' THEN 'PERFUME'
WHEN DEPT_C = 'D09' THEN 'COSMETICS'
ELSE 'OTHER' END NAME
GROUP BY 1,2
ORDER BY 2,1;
【问题讨论】:
-
谢谢,问题是我在哪里遇到了这种情况,它应该在 Select 中。我还固定了组。它工作正常,如下所示:
-
选择 DEPT_C 作为“DEPT CODE”,(DEPT_C = 'D01' THEN 'WOMAN ACTIVE WEAR' WHEN DEPT_C = 'D02' THEN 'WOMAN PLUS SIZE' WHEN DEPT_C = 'D03' THEN' JUNIORS' 当 DEPT_C = 'D04' 然后是 'GIRLS' 当 DEPT_C = 'D05' 然后是 '婴幼儿' 当 DEPT_C = 'D06' 然后是'附件' 当 DEPT_C = 'D07' 然后是'JEWLERY' 当 DEPT_C = 'D08' THEN 'PERFUME' WHEN DEPT_C = 'D09' THEN 'COSMETICS' ELSE 'OTHER' END) DEPT_NAME, TO_CHAR(COUNT(*), '999,999,999,999') 来自 STORE.DEPT GROUP BY DEPT_C ORDER BY 2,1 的总计;跨度>