我已经将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代码可以吗?
孔子
发布于 2015-04-09 06:56:43
你可以使用枢轴:
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 NULLSQL小提琴
https://stackoverflow.com/questions/29531145
复制相似问题