Oracle SQL CASE条件=比较不能正常工作?

时间:2018-08-14 02:52:58

标签: sql oracle

我有此SQL

  (CASE 
  WHEN CUST_TRANS.ADJ_IND = 'N' THEN 1
  ELSE 0
  END) AS test_N,

我有一条记录行,ADJ_IND(VARCHAR2)为'N'。 但是CASE的结果将始终返回0,知道为什么吗?

这只是一个简单的字符比较,对吗? 下表是表格结构的截断(敏感性)。 如果您需要更多详细信息,请告诉我。

TBL_CUST_TRANS

2 个答案:

答案 0 :(得分:0)

尝试一下-

(CASE CUST_TRANS.ADJ_IND 
 WHEN  'N' THEN 1
 ELSE 0
 END)

让我知道它是否有效。


这是我尝试过的SQL提琴-http://sqlfiddle.com/#!4/afc78c/3

答案 1 :(得分:0)

我假设您在SELECT语句中有“ CASE”子句。 ADJ_IND获取的值将取决于SELECT语句的WHERE条件。 我相信这里发生的是,SELECT查询正在将“ ADJ_IND”的值提取为“ Y”。因此,您的case子句返回的值为0。

Values in the table

我在本地进行了相同的测试用例,并且答案如预期般到来。 下面是我的代码:

df <- cbind(stock1,stock2,stock3,stock4)
apply(df, 2, function(x) {ifelse(cumsum(x) == 0 & x == 0, NA, x)})

Attached the screenshot of the result.