2013-07-23 96 views
-1

有问题转换IIF(VW_GE_ALL_YEARQRY.DEP = “AG”, “公司”, “OT”)作为DEPT,甲骨文转换访问IIF到Oracle

Select 
VW_GE_ALL_YEARQRY.year, 
VW_GE_ALL_YEARQRY.LOC, 
VW_GE_ALL_YEARQRY.CAT, 
VW_GE_ALL_YEARQRY.TY, 
(case when VW_GE_ALL_YEARQRY.DEP = 'AG' then 'AG' else 'OT' end) as DEPT, 
VW_GE_ALL_YEARQRY.SRCE, 
Sum(VW_GE_ALL_YEARQRY.EXPEND * 0.001) As EXP 
From 
VW_GE_ALL_YEARQRY 
GROUP BY VW_GE_ALL_YEARQRY.year, VW_GE_ALL_YEARQRY.LOC, VW_GE_ALL_YEARQRY.CAT, VW_GE_ALL_YEARQRY.TY, (case when VW_GE_ALL_YEARQRY.DEP = 'AG' then 'AG' else 'OT' end) as DEPT, VW_GE_ALL_YEARQRY.SRCE 
HAVING (((Sum(VW_GE_ALL_YEARQRY.EXPEND * 0.001)))<>0); 

查询告诉我,我有一个错误,在这一点上似乎微不足道

Error at Command Line:11 Column:169 
Error report: 
SQL Error: ORA-00933: SQL command not properly ended 
00933. 00000 - "SQL command not properly ended" 
*Cause:  
*Action: 
+0

这是一个耻辱...... –

+0

不使用Oracle和通常只使用Access,请问IIF语句的工作方式相同 – user2186876

+0

选择 VW_GE_ALL_YEARQRY.year, VW_GE_ALL_YEARQRY.LOC, VW_GE_ALL_YEARQRY.CAT, VW_GE_ALL_YEARQRY.TY, (情况下,当VW_GE_ALL_YEARQRY.DEP = 'AG',然后 'AG' 中的其他 'OT' 末端)作为DEPT, VW_GE_ALL_YEARQRY.SRCE, 萨姆(VW_GE_ALL_YEARQRY.EXPEND * 0.001)为exp 从 VW_GE_ALL_YEARQRY GROUP BY VW_GE_ALL_YEARQRY.year ,VW_GE_ALL_YEARQRY.LOC,VW_GE_ALL_YEARQRY.CAT,VW_GE_ALL_YEARQRY.TY(VW_GE_ALL_YEARQRY.DEP ='AG'时的情况'(AG)'else'OT'end)as DEPT,VW_GE_ALL_YEARQRY.SRCE HAVING(((Sum(VW_GE_ALL_YEARQRY.EXPEND * 0.001)))<> 0); – user2186876

回答

1

如果唯一的问题是你的文本中的问题,那么很容易。使用case(这是ANSI标准):

(case when VW_GE_ALL_YEARQRY.DEP = 'AG' then 'AG' else 'OT' end) as DEPT 

这是您的查询的完整版本:

Select v.year, v.LOC, v.CAT, v.TY, 
     (case when VW_GE_ALL_YEARQRY.DEP = 'AG' then 'AG' else 'OT' end) as DEPT 
     v.SRCE, 
     Sum(v.EXPEND * 0.001) As EXP 
From VW_GE_ALL_YEARQRY v 
GROUP BY v.year, v.LOC, v.CAT, v.TY, 
     (case when VW_GE_ALL_YEARQRY.DEP = 'AG' then 'AG' else 'OT' end), v.SRCE 
HAVING Sum(v.EXPEND * 0.001) <> 0; 

我以表别名简化它。我从group by条款中删除as DEPT。而且,我用单引号字符串替换了双引号字符串。

1

你可以使用DECODE()或更好的CASE WHEN

0

您可以

CASE WHEN VW_GE_ALL_YEARQRY.DEP='AG' THEN 'AG' ELSE 'OT' END 

分享更换

IIf(VW_GE_ALL_YEARQRY.DEP="AG","AG","OT") 

和享受。