簡體   English   中英

比較同一張表中的行值

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

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