0

次の ID (626、1985、2511) を満たすすべての応募者のすべての規則を印刷しようとしています。

最初のルールとして 626 を持つ申請者を印刷しますが、1985 と 2511 のみを持ち、626 を持たない申請者は印刷しません)。何か案が?

select DISTINCT AD1.AppID,

MAX(CASE WHEN (APDR1.SETTINGID= 626) THEN APDR1.reviewruletext    ELSE ' ' END)AS 'Rule1',
MAX(CASE WHEN (APDR2.SETTINGID= 1985)THEN APDR2.reviewruletext    ELSE ' ' END)AS 'Rule2', 
MAX(CASE WHEN (APDR8.SETTINGID= 2511) THEN APDR8.reviewruletext    ELSE ' ' END)AS 'Rule8' 


from  appdetail  ad1

LEFT OUTER JOIN AppPartyDetailRule   APDR1 on
  apdr1.AppID=ad1.AppID AND 
 apdr1.AppDetailID= ad1.AppDetailID and
 apdr1.AppDetailSavePointID= AD1.AppDetailSavePointID AND
 ad1.AppDetailSavePointID=0 AND
 APDR1.SettingID= 626 



LEFT OUTER JOIN AppPartyDetailRule APDR2on
 ad1.appid= apdr2.appid and 
 ad1.appdetailID= apdr2.appdetailID and 
 ad1.appdetailsavepointid= apdr2.appdetailsavepointid and
 ad1.appdetailsavepointid= 0 AND
 APDR2.SettingID= 1985


LEFT OUTER JOIN AppPartyDetailRule APDR8 on
 ad1.appid= apdr8.appid and 
 ad1.appdetailID= apdr8.appdetailID and 
 ad1.appdetailsavepointid= apdr8.appdetailsavepointid and
 ad1.appdetailsavepointid= 0 AND
 APDR8.SettingID= 2511 


 group by AD1.AppID,....  etc. (more fields)

テーブル構造は次
のとおりです。AppID、AppDetailID、AppDetailsavepointID は、上記の PK を使用して APDR に数回リンクされた AD1 テーブルの主キーを構成し、設定 ID の異なる値を抽出するたびに作成されます。

望ましい出力: AppID レビュー ルール テキスト 1、レビュー ルール テキスト 2、レビュー ルール テキスト 8

review Rule Text1 は 626、2 は 1985、8 は 2511 を表し、それぞれが特定のルールを表します

4

1 に答える 1

1

クエリを次のように簡略化できると思います。

select AD1.AppID,
       MAX(CASE WHEN (APDR1.SETTINGID = 626) THEN APDR1.reviewruletext ELSE ''
           END) AS 'Rule1',
       MAX(CASE WHEN (APDR1.SETTINGID = 1985) THEN APDR1.reviewruletext ELSE ''
           END) AS 'Rule2',  
       MAX(CASE WHEN (APDR1.SETTINGID = 2511) THEN APDR1.reviewruletext ELSE ''
           END) AS 'Rule8'
from appdetail ad1 LEFT OUTER JOIN
     AppPartyDetailRule APDR1
     on apdr1.AppID=ad1.AppID AND 
        apdr1.AppDetailID= ad1.AppDetailID and
        apdr1.AppDetailSavePointID= AD1.AppDetailSavePointID AND
        ad1.AppDetailSavePointID=0
group by ad1.appID
where APDR1.SettingID in (626, 1985, 2511)
于 2013-02-20T22:05:16.613 に答える