我想将成对的行组合成两列。 目前,我可以将它们组合成两列,但我想删除左侧列为“A”的实例,然后“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
数据:
ID | NOTES | Flag
A YES 1
B YES 2
C YES 3
D YES 4
当前输出:
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
答案 0 :(得分:3)
添加到您的where子句
buffer
答案 1 :(得分:0)
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
)