Sql 如何使用case获取不同的数据?
如果lokasyonno=27,我希望运行第一个块,如果不是第二个块。我怎么做 我尝试使用switch-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
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>)