在ms sql 2005中从两个表中获取具有非常见一列的公共行

时间:2014-11-28 07:34:47

标签: sql-server

我有两张名为SAP& amp;的表。 PRO。它们中的列相同 - 部分,描述&数量。以下是一些示例数据

create table SAP(
    Part char(1),
    Description varchar(20),
    Qty int
)
create table PRO(
    Part char(1),
    Description varchar(20),
    Qty int
)
insert into SAP values
('A', 'Apple', 2),
('A', 'Apple', 4),
('B', 'Ball', 3),
('C', 'Card', 1),
('C', 'Card', 4),
('D', 'Doll', 5),
('E', 'Egg', 12),
('F', 'Fish', 23),
('G', 'Gun', 50);

insert into PRO values
('A', 'Apple', 6),
('B', 'Ball', 1),
('D', 'Doll', 4),
('E', 'Egg', 20),
('F', 'Fish', 10);

SAP

Part Description          Qty
---- -------------------- -----------
A    Apple                2
A    Apple                4
B    Ball                 3
C    Card                 1
C    Card                 4
D    Doll                 5
E    Egg                  12
F    Fish                 23
G    Gun                  50

PRO

Part Description          Qty
---- -------------------- -----------
A    Apple                6
B    Ball                 1
D    Doll                 4
E    Egg                  20
F    Fish                 10

如图所示,两者的共同记录很少

我想通过Part和Description以及两个表中的数量来获取它们中的常见记录。常见的记录是部分 - A,B,D,E,F,描述 - Apple,Ball,Doll,Egg,Fish和数量表SAP - 2,4为Apple,3为Ball,5为Doll,12为Egg, 23表示鱼和PRO表中的数量 - 苹果为6,球为1,娃娃为4,蛋为20,鱼为10(如下图所示)

Part    Description     Qty in SAP  Qty in PRO
---- ------------------ ----------  ----------
A       Apple           2           6
A       Apple           4           6
B       Ball            3           1
D       Doll            5           4
E       Egg             12          20
F       Fish            23          10

3 个答案:

答案 0 :(得分:0)

以下Query应该可以帮助您获得所需的输出:

`SELECT SAP.Part, SAP.[Description], SAP.Qty AS [Qty in SAP], PRO.Qty AS [Qty in PRO] FROM [SAP] INNER JOIN [dbo].[PRO] ON SAP.Part=PRO.Part AND SAP.[Description]=PRO.[Description]`

答案 1 :(得分:0)

如果部分和描述相同,您可以使用连接执行此操作,是否像这样执行此操作?

    SELECT
    S.part,
    S.description,
    S.quantity, 
    P.quantity
FROM SAP S
INNER JOIN PRO P
    ON S.Part = p.Part
    AND S.Description = P.Description

您可以根据需要将联接更改为LEFT或RIGHT,以查看唯一记录。作为一个单独的注释,在同一个表(例如Apple)中有重复的键值是一个坏主意,我建议删除它并添加一个唯一的索引以防止重复出现。

答案 2 :(得分:0)

试试这个

选择

    SAP.Part, 
    SAP.[Description], 
    SAP.Qty as [Qty in SAP], 
    PRO.Qty as [Qty in PRO] 
FROM 
    SAP 
        INNER JOIN PRO 
            ON SAP.Part = PRO.Part AND SAP.[Description] = PRO.[Description]

由于

微米。帕布

相关问题