我已经将SQL运行到不同的数据库中并获得了两组查询结果(实际上有两个以上,但现在要保持简单)。 我需要使用VB代码将公共ID加入两个查询结果。
第一组查询结果(在查询输出之前是未知的)看起来像
Item ID Property A
I1 a1
I2 a2
I3 a3
....
第二组查询结果(在第二次查询输出之前是另一个未知)看起来像
Item ID Property B Property B Ref Order
I1 b1-1 1
I1 b1-3 3
I1 b1-2 2
I2 b2-1 1
I2 b2-2 2
I3 b3-2 2
I3 b3-1 1
....
我想将这样的两个查询结果与VB代码
合并Item ID Property A Property B-1 Property B-2 Property B-3
I1 a1 b1-1 b1-2 b1-3
I2 a2 b2-1 b2-2
I3 a3 b3-1 b3-2
....
我怎么能这样做?非常感谢您的帮助。
编辑:我认为需要进行一定程度的后处理,但是VB代码是否可以实现?
孔
答案 0 :(得分:2)
你可以使用PIVOT:
CREATE TABLE Temp1 (
ItemID VARCHAR(10),
PropertyA NVARCHAR(40)
);
INSERT INTO Temp1 (ItemID, PropertyA) VALUES ('i1', 'a1'),
('i2', 'a2'),
('i3', 'a3');
CREATE TABLE Temp2 (
ItemID VARCHAR(10),
PropertyB NVARCHAR(40),
PropertyBorder INT
);
INSERT INTO Temp2 (ItemID, PropertyB, PropertyBorder) VALUES ('i1', 'b1-1', 1),
('i1', 'b1-3', 3),
('i1', 'b1-2', 2),
('i2', 'b2-1', 1),
('i2', 'b2-2', 2),
('i3', 'b3-2', 2),
('i3', 'b3-1', 1);
SELECT ItemID, PropertyA,
[1] AS [Property B-1],
[2] AS [Property B-2],
[3] AS [Property B-3]
FROM
(
SELECT Temp1.ItemID, PropertyA, PropertyB, PropertyBorder
FROM Temp2
JOIN Temp1 ON Temp1.ItemID = Temp2.ItemID
) t2
PIVOT
(
MIN(t2.PropertyB)
FOR PropertyBorder IN ([1], [2], [3])
) as pvt
输出:
ItemID PropertyA Property B-1 Property B-2 Property B-3
i1 a1 b1-1 b1-2 b1-3
i2 a2 b2-1 b2-2 NULL
i3 a3 b3-1 b3-2 NULL
<强> SQL FIDDLE 强>