小编Hei*_*erg的帖子

将NVL用于多个列 - Oracle SQL

早上好,我亲爱的sql巫师和巫师,

我想要在3个表中替换3列数据.目前我正在使用NVL功能,但是这仅限于两列.

请参阅下面的示例:

    SELECT ccc.case_id,
           NVL (ccvl.descr, ccc.char)) char_val

               FROM case_char ccc, char_value ccvl, lookup_value lval1
              WHERE   
                    ccvl.descr(+) = ccc.value
                    AND ccc.value = lval1.descr (+)
                    AND ccc.case_id IN ('123'))



     case_char table
     case_id|char |value
       123  |email| work_email
       124  |issue| tim_ 



     char_value table
     char  | descr
work_email | complaint mail
    tim_   | timeliness


    lookup_value table
    descr  | descrlong
 work_email| xxx@blah.com
Run Code Online (Sandbox Code Playgroud)

基本上就是我想要做的是,如果存在与lookup_value.descr然后显示它case_char.value匹配,如果没有,那么如果存在与case_char.value和char_value.char匹配,则显示它.

我只是试图返回的说明"issue'from的char_value表,但对于'电子邮件’我要回从Lookup_Array中表descrlong(全部属于相同的别名'char_val’).

所以我的问题是,我如何实现这一点,记住我希望它们出现在同一个别名下.

如果您需要任何进一步的信息,请告诉我.

多谢你们

sql oracle coalesce nvl

13
推荐指数
2
解决办法
2万
查看次数

具有不同数据类型的Case语句

我试图在特定条件下返回SLA日.但是对于特定条件,我希望它返回不同的数据类型.目前的代码如下:

      SELECT CASE
               WHEN fourthlevel.case_type IN
                       ('Complaint')
               THEN
                  (SELECT COUNT (*)
                     FROM work_days1
                    WHERE     work_days1.business_date >
                                 fourthlevel.cdate
                          AND work_days1.business_date <=
                                 COALESCE (fourthlevel.close_date,
                                           SYSDATE))
               WHEN fourthlevel.case_type IN ('Enquiry')
               THEN
                  (SELECT COUNT (*)
                     FROM work_days1
                    WHERE     work_days1.business_date >
                                 fourthlevel.create_date
                          AND work_days1.business_date <=
                                 COALESCE (fourthlevel.close_date,
                                           SYSDATE))
            END
               AS sla_days
       FROM fourthlevel
Run Code Online (Sandbox Code Playgroud)

我希望它返回where case_status ='已取消'返回'N/A'.我知道我不能这样做,但我会包含代码,以便更容易理解:

    SELECT CASE
      WHEN fourthlevel.case_type IN ('Complaint')
      THEN
         (SELECT COUNT (*)
            FROM work_days1
           WHERE     work_days1.business_date > fourthlevel.cdate
                 AND work_days1.business_date <=
                        COALESCE (fourthlevel.close_date, SYSDATE))
      WHEN fourthlevel.case_type IN ('Enquiry')
      THEN
         (SELECT COUNT …
Run Code Online (Sandbox Code Playgroud)

sql oracle case

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×2

sql ×2

case ×1

coalesce ×1

nvl ×1