Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个表和多个列执行SQL查询以获取预期值_Sql_Oracle_Obiee - Fatal编程技术网

从一个表和多个列执行SQL查询以获取预期值

从一个表和多个列执行SQL查询以获取预期值,sql,oracle,obiee,Sql,Oracle,Obiee,我有一个表XX_LEARN,有以下详细信息 Name Offering_course Activity_Name Learning Item Name Learning Item Type XYZ COMPUTERS Course XYZ BIOTECH BIOTECH-1

我有一个表XX_LEARN,有以下详细信息

Name    Offering_course       Activity_Name      Learning Item Name         Learning Item Type
XYZ                                                    COMPUTERS              Course
XYZ      BIOTECH              BIOTECH-1                BIOTECH_OFFER          Offering
XYZ                                                    BIOTECH_OFFER          Course                                                               
DEF      MATHS                MATHS-1                  MATHS_OFFER            Offering
DEF                                                      Science                Course
在此表中,仅当学习项目类型为“产品”时,才会填充产品课程和活动名称。当学习项目类型为'Course'时,将仅填充列学习项目名称,并且这些列的课程和活动名称将为空

现在,查询的预期输出为-

Name           Activity_Name            Course Name        Learning Item Type
    XYZ                                  COMPUTERS              Course
    XYZ        BIOTECH-1                 BIOTECH                Offering                                                    
    DEF        MATHS-1                   MATHS                  Offering
    DEF                                  Science                Course
即,课程名称列应包括XX_Learn中的学习项目名称=‘课程’,并将这些项目的活动名称显示为null,对于学习项目名称=‘课程’列,课程名称列应显示相应的活动名称


这必须在单个查询中完成,因为我正在OTBI分析中使用它。有什么方法可以使用UNION函数来实现这一点吗?

这里不需要
UNION
。您可以使用
大小写
表达式:

select
    name,
    activity_name,
    case when learning_item_type = 'Course'
        then learning_item_name
        else offering_course
    end course_name,
    learning_item_type
from mytable

NAME | ACTIVITY_NAME | COURSE_NAME | LEARNING_ITEM_TYPE :--- | :------------ | :---------- | :----------------- XYZ | null | COMPUTERS | Course XYZ | BIOTECH-1 | BIOTECH | Offering DEF | MATHS-1 | MATHS | Offering DEF | null | Science | Course 名称|活动|名称|课程|名称|学习|项目|类型 :--- | :------------ | :---------- | :----------------- XYZ |空|计算机|课程 XYZ生物技术-1生物技术产品 定义|数学-1 |数学|课程 定义|空|科学|课程
您可以使用
WINDOWS
功能和简单的
CASE..WHEN
如下所示:

select * from
(select name, activity_name, case when learning_item_type = 'Course'
        then learning_item_name
        else offering_course
    end course_name,
    row_number() over (partition by learning_item_name order by learning_item_type desc) as rn
from your_table)
where rn = 1

@GMB-我已经编辑了您的“插入”查询,以显示我现在面临的确切问题。你能帮我删除副本吗?这和欧比有什么关系?它不使用查询。它使用模型。