在连接时合并SQL中的行

在连接时合并SQL中的行,sql,join,Sql,Join,我想把成对的行组合成两列。 目前,我可以将它们组合成两列,但我想删除一些实例,其中如果左边的列是“A”,那么右边就不会出现“A”。基本上,我有两行,我应该 另外,我读到了关于使用pivot的内容,但无法使其发挥作用 Select t1.ID, concat(t1.Notes,' ' + t2.Notes) as Notes, t1.Flag, t2.ID as Old_ID From mytable as t1 Left outer Join mytable as t2 On ( t1.

我想把成对的行组合成两列。 目前,我可以将它们组合成两列,但我想删除一些实例,其中如果左边的列是“A”,那么右边就不会出现“A”。基本上,我有两行,我应该

另外,我读到了关于使用pivot的内容,但无法使其发挥作用

Select t1.ID, concat(t1.Notes,' ' + t2.Notes) as Notes, t1.Flag, t2.ID as Old_ID
From mytable as t1
Left outer Join mytable as t2
    On ( t1.Flag = t2.Flag and t1.ID != t2.ID)
where t1.Notes is not null
数据:

电流输出:

ID |   NOTES   | Flag | Old_ID
A     YES YES      1     B
C     YES YES      3     D
B     YES YES      2     A
D     YES YES      4     C
预期产出:

ID |   NOTES   | Flag | Old_ID
A     YES YES     1      C
B     YES YES     2      D
无法确定哪个是“旧”条目 您必须定义一些标准,根据这些标准将一个条目优先于另一个条目。
添加到where子句

WHERE
    t1.Id < t2.Id
在哪里
t1.Id
t1和t2是相同的,那么
old_id
如何不等于
id
?我正在使用MS-SQL@jonathanallen,这是我试图解决的问题。如果没有它,它会将输出加倍(A、B、C、D的两行)@JoseRodriguesid和old_id实际上引用了两个不同的数据集(同一个表,带别名)。加入一张桌子对抗自己并不少见。太棒了!非常感谢。真不敢相信我没想到这么做。
A     YES YES      1     B  - which takes precidence?
B     YES YES      2     A 
SELECT
    t1.ID,
    concat(t1.Notes,' ' + t2.Notes) AS Notes,
    t1.Flag,
    t2.ID AS Old_ID
FROM mytable AS t1
LEFT OUTER JOIN mytable AS t2
    ON ( t1.Flag = t2.Flag AND t1.ID != t2.ID)
WHERE
    t1.Notes IS NOT NULL
    AND t1.id NOT IN (
        SELECT MAX(id) FROM mytable GROUP BY Flag
    )
WHERE
    t1.Id < t2.Id