典型的2个表连接

本文介绍了一个使用SQL进行数据整合的具体案例。通过对两个不同表格中关于商品的进货与出货信息进行处理,实现了对商品的进货数量、进货价值、出货数量、出货价值等关键指标的汇总,并计算了每种商品的进货与出货次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表a
品名      进货数量    进货价值     进货人
电视机    4            8000                 小张      
电话      10           5000                  小刘
电视机    5            10000                小王   

表b
品名       出货数量    出货价值       出货人
电视机      2            9000                 小胡
VCD         5            2500                 大李
VCD         1             500                   老刘

查询得到
品名      进货数量    进货价值      出货数量    出货价值      进货次数        出货次数
电视机    9               18000               2                 9000                 2                     1
电话      10               5000                 0                  0                       1                     0
VCD        0               0                        6                 3000                 0                     2


if not object_id(N'Tempdb..#a'is null
    drop table #a
Go
Create table #a([品名] nvarchar(23),[进货数量] int,[进货价值] int,[进货人] nvarchar(22))
Insert #a
select N'电视机',4,8000,N'小张' union all
select N'电话',10,5000,N'小刘' union all
select N'电视机',5,10000,N'小王'
GO
if not object_id(N'Tempdb..#b'is null
    drop table #b
Go
Create table #b([品名] nvarchar(23),[出货数量] int,[出货价值] int,[出货人] nvarchar(22))
Insert #b
select N'电视机',2,9000,N'小胡' union all
select N'VCD',5,2500,N'大李' union all
select N'VCD',1,500,N'老刘'
Go
--测试数据结束
SELECT  CASE WHEN t1.品名 IS NULL THEN t2.品名
             ELSE t1.品名
        END AS 品名 ,
        ISNULL(进货数量,0) 进货数量 ,
        ISNULL(进货价值,0) 进货价值,
        ISNULL(出货数量,0) 出货数量,
        ISNULL(出货价值,0) 出货价值,
        ISNULL(进货次数,0) 进货次数,
        ISNULL(出货次数,0) 出货次数
FROM    
        ( SELECT    品名 ,
                    SUM(进货数量) AS 进货数量 ,
                    SUM(进货价值) AS 进货价值 ,
                    COUNT(1) AS 进货次数
          FROM      #a
          GROUP BY  品名
        ) t1
        FULL JOIN 
               ( SELECT  品名 ,
                            SUM(出货数量) AS 出货数量 ,
                            SUM(出货价值) AS 出货价值 ,
                            COUNT(1) AS 出货次数
                    FROM    #b
                    GROUP BY 品名
                  ) t2 
      ON t2.品名 = t1.品名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值