[英]Comparing row values from same table
我正在嘗試生成查詢。 我需要下表中TABLEOBJECTID列中的值,其中TABLENAME ='EMPLOYEE'和INTERFACE MAINTAINED(CUSTFIELDNAME)= YES(CUSTFIELDVALUE)和TRANSFER FLAG(CUSTFIELDNAME)= YES(CUSTFIELDVALUE)表示感謝。 下面顯示的SQL無法正常工作並獲取數據,但它也從其他字段獲取值。
數據:
TABLEOBJECTID CUSTFIELDID TABLENAME CUSTFIELDNAME CUSFIELDVALUE
2 4 EMPLOYEE INTERFACE MAINTAINED No
2 5 EMPLOYEE TRANSFER HOURS TO AG Yes
2 7 EMPLOYEE TRANSFER FLAG Yes
3 4 EMPLOYEE INTERFACE MAINTAINED Yes
3 7 EMPLOYEE TRANSFER FLAG Yes
31 4 EMPLOYEE INTERFACE MAINTAINED No
31 5 EMPLOYEE TRANSFER HOURS TO AG No
31 6 EMPLOYEE DEFAULT JOB CODE
94 4 EMPLOYEE INTERFACE MAINTAINED No
94 6 EMPLOYEE DEFAULT JOB CODE 0325
94 7 EMPLOYEE TRANSFER FLAG No
96 4 EMPLOYEE INTERFACE MAINTAINED No
96 6 EMPLOYEE DEFAULT JOB CODE 0325
100 4 EMPLOYEE INTERFACE MAINTAINED No
100 5 EMPLOYEE TRANSFER HOURS TO AG No
100 6 EMPLOYEE DEFAULT JOB CODE
100 7 EMPLOYEE TRANSFER FLAG No
101 4 EMPLOYEE INTERFACE MAINTAINED Yes
101 6 EMPLOYEE DEFAULT CODE 9760
101 7 EMPLOYEE TRANSFER FLAG Yes
預期結果:
TABLEOBJECTID CUSTFIELDID TABLENAME CUSTFIELDNAME CUSFIELDVALUE
3 4 EMPLOYEE INTERFACE MAINTAINED Yes
3 7 EMPLOYEE TRANSFER FLAG Yes
101 4 EMPLOYEE INTERFACE MAINTAINED Yes
101 7 EMPLOYEE TRANSFER FLAG Yes
我一直在嘗試此腳本,但它也帶來了其他CUSTFIELDNAME的結果:
select CWA.TABLEOBJECTID ,CWA.CUSTFIELDID ,CWA.CUSTFIELDNAME ,CWA.CUSTFIELDVALUE ,CWA.TABLENAME ,CWA.TABLEOBJECTID from az.CWCUSTFIELD CWA
inner join az.CWCUSTFIELD CWB on CWA.TABLEOBJECTID =CWB.TABLEOBJECTID and CWA.CUSTFIELDID <> CWB.CUSTFIELDID
where CWA.tablename = 'EMPLOYEE' and CWB.TABLENAME ='EMPLOYEE' and (CWA.CUSTFIELDVALUE = 'YES' and CWB.CUSTFIELDVALUE = 'YES')
您在僅查找INTERFACE MAINTAINED(4)和TRANSFER FLAG(7)時錯過了CUSTFIELDID上的篩選器,因此您應該在兩個表的此字段上添加篩選器。
AND CWA.CUSTFIELDID(4,7) AND CWB.CUSTFIELDID(4,7)
或者您可以在CUSTFIELDNAME而不是CUSTFIELDID上應用過濾器,例如
AND CWA.CUSTFIELDNAME IN ('INTERFACE MAINTAINED', 'TRANSFER FLAG')
AND CWB.CUSTFIELDNAME IN ('INTERFACE MAINTAINED', 'TRANSFER FLAG')
最終查詢-
select CWA.TABLEOBJECTID ,
CWA.CUSTFIELDID ,
CWA.CUSTFIELDNAME ,
CWA.CUSTFIELDVALUE ,
CWA.TABLENAME ,
CWA.TABLEOBJECTID
from az.CWCUSTFIELD CWA
inner join az.CWCUSTFIELD CWB on CWA.TABLEOBJECTID =CWB.TABLEOBJECTID
and CWA.CUSTFIELDID <> CWB.CUSTFIELDID
where CWA.tablename = 'EMPLOYEE'
and CWB.TABLENAME ='EMPLOYEE'
and CWA.CUSTFIELDVALUE = 'YES'
and CWB.CUSTFIELDVALUE = 'YES'
and CWA.CUSTFIELDNAME IN ('INTERFACE MAINTAINED', 'TRANSFER FLAG')
and CWB.CUSTFIELDNAME IN ('INTERFACE MAINTAINED', 'TRANSFER FLAG')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.