簡體   English   中英

在表的一列上使用別名的 Where 子句

[英]Where clause using alias on one column of a table

我正在嘗試使用表中的一列獲取一些結果,根據某些條件應該獲取結果。

下面是一個查詢 output:這是我下面問題的參考數據

select cdoctype, cfree7, cfree20
from TBISMT_DOCUMENTS
where cfree7 = '185768_TA'

在此處輸入圖像描述

另參考查詢及樣品output

select cdoctype, cfree7, cfree20
from TBISMT_DOCUMENTS
where cfree20 = '185768_TA'

在此處輸入圖像描述

目標是:檢查每個 cdoctype = 850 和 cfree7 的 db 中是否存在任何其他行。 換句話說,如果存在除 850 之外的任何其他 cdoctype,則 cfree7 中的值應與 cfree7 的另一行匹配。

我提出了以下查詢,它按預期工作,但我不確定“t2.cfree20”值如何顯示為185768_TA並且它正在工作。

 SELECT DISTINCT t1.cwfid, t1.cdoctype, t1.cfree7, t2.cfree20, t1.cfree20 
 FROM TBISMT_DOCUMENTS t1,
      TBISMT_DOCUMENTS t2 
 WHERE t1.cfree7 = '185768_TA'
   and t1.cdoctype= '810'
   and t1.cfree7 = t2.cfree20

下面是樣品 output

在此處輸入圖像描述

使用它來獲取具有相同 cfree7 和 cfree20 且 cdoctype 不等於 850 的所有行

 SELECT 
         DISTINCT t1.cwfid,
         t1.cdoctype, 
         t1.cfree7,
         t2.cfree20, 
         t1.cfree20 
 FROM TBISMT_DOCUMENTS t1 
 Inner join TBISMT_DOCUMENTS t2  on t1.cfree7 = t2.cfree20
 WHERE t1.cdoctype != '850'

換句話說,如果存在除 850 之外的任何其他 cdoctype,則 cfree7 中的值應與 cfree7 的另一行匹配。

我將其解釋為您想要cfree7中的值與cdoctype = 850行中的值匹配的任何行。 如果是這樣:

select d.*
from TBISMT_DOCUMENTS d
where d.cdoctype <> 850 and
      exists (select 1
              from TBISMT_DOCUMENTS d2
              where d2.cfree7 = d.cfree7 and
                    d2.cdotype = 850
             );

暫無
暫無

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

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