[英]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.