日期:2014-05-17  浏览次数:20407 次

复杂查询求救
表A
Date               BH       Number
2012-12-1          1           10
2012-12-1          2           20
2012-12-1          3           30
2012-12-2          1           10
2012-12-2          2           20
2012-12-3          1           10

表B
Date               BH 
2012-12-1          2
2012-12-1          3
2012-12-2          1



结果:
2012-12-1           60           50        10
2012-12-1           30           20        10
2012-12-1           10           10        10


即对表A以Date分组统计,后然后以日期为索引联合表B和表A进行查询,表A中相应日期对应的数据再减去联合查询的数据。
表A实际是销售数据,表B是退货数据,表A包含了B的信息,但B中没有包含金额数据。不知道是谁这么设计的数据库,真晕,改结构已经没有办法了,可能是利用现有的结构来做了。
谢谢各位的指点!                         



------解决方案--------------------
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-01-15 23:34:06
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
-- Jun 17 2011 00:57:23 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[表A]
if object_id('[表A]') is not null drop table [表A]
go 
create table [表A]([Date] datetime,[BH] int,[Number] int)
insert [表A]
select '2012-12-1',1,10 union all
select '2012-12-1',2,20 union all
select '2012-12-1',3,30 union all
select '2012-12-2',1,10 union all
select '2012-12-2',2,20 union all
select '2012-12-3',1,10
--> 测试数据:[表B]
if object_id('[表B]') is not null drop table [表B]
go 
create table [表B]([Date] datetime,[BH] int)
insert [表B]
select '2012-12-1',2 union all
select