2015-09-21 151 views
0

我是新来的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; 
+0

谢谢,问题是我有这种情况在哪里,它应该在选择。我也通过固定小组。它的工作原理罚款如下: – sqljeopardy

+0

选择 DEPT_C AS “部门代码”, (CASE WHEN DEPT_C = 'D01',然后 'WOMAN ACTIVE WEAR' WHEN DEPT_C = 'D02',然后 'WOMAN PLUS SIZE' WHEN DEPT_C =' D03' THEN 'JUNIORS' WHEN DEPT_C = 'D04' THEN 'GIRLS' WHEN DEPT_C = 'D05' THEN '婴儿和学步儿童' WHEN DEPT_C = 'D06' THEN '附件' WHEN DEPT_C = 'D07' THEN'条我们” WHEN DEPT_C = 'D08' THEN '香水' WHEN DEPT_C = 'D09' THEN 'COSMETICS' ELSE '其他' END)DEPT_NAME, TO_CHAR(COUNT(*), '999999999999')为总 FROM STORE .DEPT GROUP BY DEPT_C ORDER BY 2,1; – sqljeopardy

回答

3

CASE觉得作为一个switch声明。

在这种情况下,您需要为每个部门代码指定一个不同的名称。因此,您的案例使用DEPT_C列作为参考变量,并为单个代码分配名称值。

像这样:

SELECT 
DEPT_C AS "DEPT CODE", 
CASE DEPT_C 
WHEN 'D01' THEN 'WOMAN ACTIVE WEAR' 
WHEN 'D02' THEN 'WOMAN PLUS SIZE' 
WHEN 'D03' THEN 'JUNIORS' 
WHEN 'D04' THEN 'GIRLS' 
WHEN 'D05' THEN 'INFANTS AND TODDLERS' 
WHEN 'D06' THEN 'ACCESSORIES' 
WHEN 'D07' THEN 'JEWLERY' 
WHEN 'D08' THEN 'PERFUME' 
WHEN 'D09' THEN 'COSMETICS' 
ELSE 'OTHER' 
END as 'DEPT NAME' 
FROM STORE.DEPT 

编辑:

您也可以忽略input expression,即DEPT_C,但随后的每个条件应该是明确的,就像这样:

SELECT 
DEPT_C AS "DEPT CODE", 
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 as 'DEPT NAME' 
FROM STORE.DEPT 

CAVEAT: 我改变了您的选择顺序,请务必相应地重写您的GROUP BYORDER BY