我试图打印符合以下ID(626,1985,2511)的所有申请人的所有规则。SQL Server 2008中的复杂连接
它打印申请人有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弥补其连接至 APDR每次使用上面的PK和几次在AD1表中的主键将其解压缩为一个不同的值settingID。
所需的输出是: 的AppID审查规则的text1,审查规则文本2,综述规则文本8
审查规则文本1表示626,图2是1985年8是2511,并且每个表示一定的治
涉及哪些表和WH在他们的结构?他们有什么关系?最终结果应该是什么样子? – Oded 2013-02-20 21:56:25
您好oded,请参阅添加到问题的评论。 – Joe 2013-02-20 22:01:55