1

下面是我用来尝试让修订值对齐的基础。我没有建表,所以请耐心等待,因为显然可以对结构进行一些改进

我试图简化查询以使其更易于阅读,可能存在拼写错误或语法问题。


表格1

KEY1、标记名、父标记

1、标签1、1

2,标签2,空

表2

KEY2,修订

1、一个


没有中间的“案例”,我得到:

KEY1、标记名、修订版

1,标签1,A

2,标签2,空

我想:

KEY1、标记名、修订版

1,标签1,A

2、标签2、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

我已经尝试了各种各样的东西,这一个我似乎无法得到!

提前致谢!!

4

1 回答 1

0

使用 a 更容易CTS,在这种情况下,它仅用作在主表 ( Table1) 和修订表 ( Table2) 之间创建链接的视图。

它可以在不使用 a 的情况下编写,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

工作示例:http ://sqlfiddle.com/#!3/67019/1

于 2013-09-20T15:32:08.767 回答