首页 > 解决方案 > 加入同一张表两次sql server

问题描述

我有一个名为 Notes 的表:

备注表

我想这样展示:

结果表

select n1.note_ecrit, n1.note_tp, n1.note_total, n2.note_ecrit, n2.note_tp, n2.note_total
from Notes n1
     inner join Notes n2 on n1.cne = n2.cne

标签: sqlsql-server-2008

解决方案


你的问题不是很清楚,希望我理解正确。如果您一个接一个地手动列出列,最简单(远非最好!)的解决方案是简单地使用嵌套查询:

SELECT n1.note_ecrit, n1.note_tp, n1.note_total, 
       (SELECT n2.note_ecrit FROM Notes n2 on n1.cne = n2.cne) as note_ecrit, 
       (SELECT n2.note_tp    FROM Notes n2 on n1.cne = n2.cne) as note_tp,
       (SELECT n2.note_total FROM Notes n2 on n1.cne = n2.cne) as note_total
FROM Notes n1

注意:您不必太担心性能,查询 3 个单独的列 3 次。在大多数情况下,SQL 服务器会以某种方式构造查询,即它只会在内部查询记录一次。但它没有被授予;当性能至关重要时,始终测试选项以获得最佳结果。

在某些情况下,更好的方法可能是使用SQL 服务器的STRING_AGG函数将值列出到一个结果字段中,这样的输出格式是可以接受的。


推荐阅读