Sql 如何使用case获取不同的数据?

Sql 如何使用case获取不同的数据?,sql,oracle,join,switch-statement,case,Sql,Oracle,Join,Switch Statement,Case,如果lokasyonno=27,我希望运行第一个块,如果不是第二个块。我怎么做 我尝试使用switch-case结构,但由于没有公共列,所以无法得到结果 首先 SELECT round(呃,NETTUTAR) 来自TBL_IRSALIYE IR 内部连接TBL_URUNHAREKETLERI UH ON UH.IRSALIYEID=IR.IRSALIYEID UH.URUNID=U.URUNID上的内部连接TBL_URUNLER U 其中IR.LOKASYONNO=27 和IR.TUR=7 和I

如果lokasyonno=27,我希望运行第一个块,如果不是第二个块。我怎么做

我尝试使用switch-case结构,但由于没有公共列,所以无法得到结果

首先

SELECT round(呃,NETTUTAR)
来自TBL_IRSALIYE IR
内部连接TBL_URUNHAREKETLERI UH ON UH.IRSALIYEID=IR.IRSALIYEID
UH.URUNID=U.URUNID上的内部连接TBL_URUNLER U
其中IR.LOKASYONNO=27
和IR.TUR=7
和IR.IPTAL=0
和IR.ONAY=1
和IR.BILLED=1
和IR.INTERNET=60
和ROWNUM截止日期('2020-09-27','yyyy-mm-dd')
和塔里
截至日期('2020-09-27 0:0:0',
‘yyyy-mm-dd HH24:MI:SS’)

和TRANSACTION_DATE使用两个查询中的一个
联合
,但在第一个查询中添加一个
不存在()
,作为第二个查询的附加条件:

<first query>
union all
<second query>
where not exists (<first query>)

联合所有
不存在的地方()

请将查询简化为尽可能少地演示问题的简单版本-所有这些连接等都与您的问题无关。请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并以表格式作为代码输入。在总体目标上暂停工作,在第一个表达中删去代码,不要给出你期望的,说出你期望的,为什么。这很复杂。我解决不了这个问题。如果不存在(完整代码块)?其给定子查询返回多行error@crashed此语法不会导致该错误。该错误必须在第一个或第二个查询中。如果您可以独立运行每一个,那么这种方法将起作用<代码>不存在(…)
用于处理返回多行的查询
     NVL (
                             (SELECT ROUND (
                                        SUM (
                                           CASE DOCUMENT_TYPE
                                              WHEN 2
                                              THEN
                                                 (CASE TRANSACTION_TYPE
                                                     WHEN 0
                                                     THEN
                                                          0
                                                        - (  LINE_TOTAL_VALUE
                                                           - LINE_TOTL_DISCOUNT)
                                                     ELSE
                                                          LINE_TOTAL_VALUE
                                                        - LINE_TOTL_DISCOUNT
                                                  END)
                                              ELSE
                                                 (CASE TRANSACTION_TYPE
                                                     WHEN 1
                                                     THEN
                                                          0
                                                        - (  LINE_TOTAL_VALUE
                                                           - LINE_TOTL_DISCOUNT)
                                                     ELSE
                                                        (  LINE_TOTAL_VALUE
                                                         - LINE_TOTL_DISCOUNT)
                                                  END)
                                           END),
                                        10)
                                FROM TBL_TRANSACTION_LINES
                               WHERE     (TRANSACTION_TYPE NOT IN (10, 30))
                                     AND STORE_NO = LOK.LOKASYONNO
                                     AND (URUNID = TBL_URUNLER.URUNID)
                                     AND TRANSACTION_DATE >
                                            TO_DATE ('2020-09-27 0:0:0',
                                                     'yyyy-mm-dd HH24:MI:SS')
                                     AND TRANSACTION_DATE <=
                                            TO_DATE ('2020-10-04 0:0:0',
                                                     'yyyy-mm-dd HH24:MI:SS')),
                             0)
                             AS HAFTALIKKASASATISTUTARI
<first query>
union all
<second query>
where not exists (<first query>)