簡體   English   中英

如何在INFORMIX的where子句中使用if語句?

[英]How to use if statement within where clause in INFORMIX?

我有以下查詢,並且數據庫為INFORMIX:有人知道如何通過示例或參考實現它嗎? 我在Informix文檔和Google中進行了搜索,但找不到解決此問題的有用信息。

select i.doc_nr, i.doc_mut, i.year, i.mode, i.tb, i.patientid 
from tdba.include as i, t3
where i.year = t3.year
AND i.mode= t3.mode
AND i.tb=t3.tb
AND i.doc_mut= t3.doc_mut
-- here I wanna add another AND condition namely i.patientid= t3.patientid based on the following condition as a subquery.
EXISTS(SELECT omw_nr FROM tdba.aggromw AS omw WHERE omw.omw_nr = i.doc_mut)

您應該能夠在WHERE子句中使用CASE表達式。

https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sqlt.doc/ids_sqt_080.htm

像這樣:

CREATE TABLE tdba.include (doc_nr int, doc_mut int, year int, mode int, tb int, patientid int);
CREATE TABLE t3( year int, mode int, tb int, doc_mut int, patientid int);
CREATE TABLE tdba.aggromw (omw_nr int);

INSERT INTO tdba.include  VALUES (1,1,1,1,1,13);
INSERT INTO t3  VALUES (1,1,1,1,14);

“ subselect”表中沒有數據:

SELECT i.doc_nr, i.doc_mut, i.year, i.mode, i.tb, i.patientid 
FROM tdba.include as i, t3
WHERE i.year = t3.year
AND i.mode= t3.mode
AND i.tb=t3.tb
AND i.doc_mut= t3.doc_mut
AND i.patientid = CASE when EXISTS(SELECT omw_nr FROM tdba.aggromw AS omw WHERE omw.omw_nr = i.doc_mut)
                       then t3.patientid 
                       else  i.patientid
                  END
                ;  


>                               ;

-------
     doc_nr     doc_mut        year        mode          tb   patientid

          1           1           1           1           1          13

1 row(s) retrieved.

在“ aggromw”表中插入一行后,EXISTS返回“ true”,這將“強制”“ i.patientid = t3.patientid”過濾器

INSERT INTO tdba.aggromw  VALUES (1);

SELECT i.doc_nr, i.doc_mut, i.year, i.mode, i.tb, i.patientid 
FROM tdba.include as i, t3
WHERE i.year = t3.year
AND i.mode= t3.mode
AND i.tb=t3.tb
AND i.doc_mut= t3.doc_mut
AND i.patientid = CASE when EXISTS(SELECT omw_nr FROM tdba.aggromw AS omw WHERE omw.omw_nr = i.doc_mut)
                       then t3.patientid 
                       else  i.patientid
                  END
                ;  

-------
    doc_nr     doc_mut        year        mode          tb   patientid


No rows found.

>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM