首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个查询结果合并为公共ID

将两个查询结果合并为公共ID
EN

Stack Overflow用户
提问于 2015-04-09 06:18:27
回答 1查看 94关注 0票数 1

我已经将SQL运行到不同的数据库中,并获得了两组查询结果(实际上超过两个,但暂时保持简单)。我需要用VB代码用通用ID连接两个查询结果。

第一组查询结果(在查询输出之前是未知的)看起来像

代码语言:javascript
复制
Item ID    Property A
I1         a1
I2         a2
I3         a3
....

第二组查询结果(这是第二个查询输出之前的另一个未知结果)看起来类似于

代码语言:javascript
复制
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代码合并

代码语言:javascript
复制
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代码可以吗?

孔子

EN

回答 1

Stack Overflow用户

发布于 2015-04-09 06:56:43

你可以使用枢轴:

代码语言:javascript
复制
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

产出:

代码语言:javascript
复制
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小提琴

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29531145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档