首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问SQL查询

2013-02-25 
请教SQL查询有如下数据表单号日期名称数量金额130201012013-2-1电脑2066000130201012013-2-1赠品A10600130

请教SQL查询
有如下数据表

单号        日期          名称    数量     金额
13020101   2013-2-1     电脑    20      66000
13020101   2013-2-1     赠品A   10      600
13020202   2013-2-2     手机    20      66000
13020202   2013-2-2     赠品B   5       300
13020303   2013-2-3     手机     3      9900
13020404   2013-2-4     电脑     2      6600


想把赠品的数量和金额合并到主商品上,结果如下

单号        日期          名称   数量     金额
13020101   2013-2-1     电脑   30      66600
13020202   2013-2-2     手机   25      66300
13020303   2013-2-3     手机    3      9900
13020404   2013-2-4     电脑    2      6600

[解决办法]
可以啊

----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-02-22 16:42:00
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--Jun 17 2011 00:54:03 
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([单号] int,[日期] datetime,[名称] varchar(5),[数量] int,[金额] int)
insert [huang]
select 13020101,'2013-2-1','电脑',20,66000 union all
select 13020101,'2013-2-1','赠品A',10,600 union all
select 13020202,'2013-2-2','手机',20,66000 union all
select 13020202,'2013-2-2','赠品B',5,300 union all
select 13020303,'2013-2-3','手机',3,9900 union all
select 13020404,'2013-2-4','电脑',2,6600
--------------开始查询--------------------------



SELECT  b.单号 ,
        b.日期 ,
        a.名称 ,
        b.数量 ,
        b.金额
FROM    ( SELECT    *
          FROM      huang
          WHERE     名称 NOT LIKE '赠品%'
        ) a


        INNER JOIN ( SELECT 单号 ,
                            日期 ,
                            SUM(数量) 数量 ,
                            SUM([金额]) [金额]
                     FROM   [huang]
                     GROUP BY 单号 ,
                            日期
                   ) b ON a.单号 = b.单号
                          AND a.日期 = b.日期 
/*
单号          日期                      名称    数量          金额
----------- ----------------------- ----- ----------- -----------
13020101    2013-02-01 00:00:00.000 电脑    30          66600
13020202    2013-02-02 00:00:00.000 手机    25          66300
13020303    2013-02-03 00:00:00.000 手机    3           9900
13020404    2013-02-04 00:00:00.000 电脑    2           6600

(4 行受影响)

*/

热点排行