如何查询相关记录之间的链接?

时间:2013-06-05 10:08:01

标签: sql sql-server sql-server-2008 common-table-expression

我在表格中有以下记录。查看column1和column3,这些数据之间存在联系。

Column1           Column2          Column3
----------------- ---------------- --------------------
20003             PurchaseTrx      50001
20008             PurchaseTrx      50008
20011             ProductionTrx    90103
20011             ProductionTrx    90085
20026             PurchaseTrx      50021
20026             ProductionTrx    90145
20053             PurchaseTrx      50032
50008             PurchaseTrx      20008
50001             PurchaseTrx      20003
90085             SalesTrx         20011
90085             ProductionTrx    90103
90145             SalesTrx         20026
90145             PurchaseTrx      50021

如何创建可以将这些数据链接在一起的查询?例如这些数据是相互联系的......

  1. 20003-50001和50001-20003
  2. 20008-50008和50008-20008
  3. 20011-90085,20011-90103和90085-20011以及90085-90103等
  4. 由于

1 个答案:

答案 0 :(得分:1)

表格结构和数据:

CREATE TABLE [MyTable]
(
    [Column1] INT,
    [Column2] VARCHAR(20),
    [Column3] INT
)

INSERT [MyTable]    VALUES(20003, 'PurchaseTrx', 50001)
INSERT [MyTable]    VALUES(20008, 'PurchaseTrx', 50008)
INSERT [MyTable]    VALUES(20011, 'ProductionTrx', 90103)
INSERT [MyTable]    VALUES(20011, 'ProductionTrx', 90085)
INSERT [MyTable]    VALUES(20026, 'PurchaseTrx', 50021)
INSERT [MyTable]    VALUES(20026, 'ProductionTrx', 90145)
INSERT [MyTable]    VALUES(20053, 'PurchaseTrx', 50032)
INSERT [MyTable]    VALUES(50008, 'PurchaseTrx', 20008)
INSERT [MyTable]    VALUES(50001, 'PurchaseTrx', 20003)
INSERT [MyTable]    VALUES(90085, 'SalesTrx', 20011)
INSERT [MyTable]    VALUES(90085, 'ProductionTrx', 90103)
INSERT [MyTable]    VALUES(90145, 'SalesTrx', 20026)
INSERT [MyTable]    VALUES(90145, 'PurchaseTrx', 50021)

自联接查询示例:

SELECT CONVERT(VARCHAR(10),t1.[Column1]) + '-' + CONVERT(VARCHAR(10),t2.[Column1]), t1.[Column2]
FROM [MyTable] t1
INNER JOIN [MyTable] t2
    ON t1.[Column1] = t2.Column3