2017-08-04 99 views
0

下面的代码正常工作。当选择条件产生错误时选择大小写

(SELECT  (CASE 
    WHEN (PA.ACTOR_KIND = 5) THEN 
    (SELECT POP.KDS_TEKLIF_TUT_TL) 
     ELSE 0 END) AS Expr1) AS YKF_CUSTOMER_LIMIT 

但是,当我添加另一个“当”条件它会给出错误。

(SELECT  (CASE 
    WHEN (PA.ACTOR_KIND = 5) THEN 
    (SELECT POP.KDS_TEKLIF_TUT_TL) 
    WHEN (PA.ACTOR_KIND = 10) THEN 
    (SELECT POP.KDS_ALICI_LIM_TL) 
     ELSE 0 END) AS Expr1) AS YKF_CUSTOMER_LIMIT 

似乎所有的逻辑给我,但不是SQL

**编辑它是由错字错误造成的,有什么不对这些发言。

+0

什么是错误?还要标记您正在使用的数据库。 –

+0

另外,请使用可读格式。这可能会单独显示错误(例如缺少偏执性,'case' /'end'等不匹配) – HoneyBadger

回答

2

我不知道这是否会解决您的问题,但你并不需要SELECTWHEN条款:

SELECT (CASE WHEN PA.ACTOR_KIND = 5 
      THEN POP.KDS_TEKLIF_TUT_TL 
      WHEN PA.ACTOR_KIND = 10 
      THEN POP.KDS_ALICI_LIM_TL 
      ELSE 0 
     END) AS YKF_CUSTOMER_LIMIT 

你并不需要给表达的名字在作为子查询以及在外部查询中。一个名字就够了。 (虽然这不会导致你的错误)

+0

虽然它不会导致错误,但它不需要表达式和select语句,我更改了代码并将其移除不必要的选择和expr。 – erhan355

+0

@ erhan355。 。 。我懂了。这不是一个错误,只是不必要的。 –

+0

我接受您的回答以避免对此问题的其他回复以及您努力展示最佳做法。 – erhan355