以下是我尝试将修订版值排成一行的基础。我没有建造桌子,所以请耐心等待,因为显然可以对结构进行一些改进
我已尝试简化查询以使其更易于阅读,可能存在拼写错误或语法问题。
表1
KEY1,TagName,ParentTag
1,TAG1,1
2,TAG2,NULL
表2
KEY2,修订
1,A
没有中间' CASE',我得到:
KEY1,TagName,Revision
1,Tag1,A
2,Tag2,NULL
我想:
KEY1,TagName,Revision
1,Tag1,A
2,Tag2,A
SELECT
KEY1, --Table1
TagName, --Table1
Case When Revision is null THEN (
SELECT Revision
from TABLE2
Left join TABLE1
ON KEY1 = KEY2
where TagName like ParentTag)
ELSE ParentTag
END as 'REV'
FROM TABLE1
left join Table2
ON KEY2 = KEY1
我尝试过各种各样的东西,这个我似乎很难找到!
提前致谢!!
答案 0 :(得分:0)
使用CTS
更容易,在这种情况下,Table1
仅用作创建主表(Table2
)和修订表(CTS
)之间链接的视图
它可以在不使用;With cts_Revision as (
Select key1, TagName, ParentTag, Revision From Table1 as a
left join Table2 as b on a.key1 = b.key2
)
select a.Key1, a.TagName, coalesce(a.revision, parent.revision) as rev
FROM cts_revision as a
left join cts_revision as parent
on parent.key1 = a.ParentTag
的情况下编写,但它的可读性要差得多。
{{1}}