当前位置: 代码迷 >> Sql Server >> 统计求和有关问题
  详细解决方案

统计求和有关问题

热度:8   发布时间:2016-04-24 10:44:48.0
统计求和问题
id      订单号     订单总重量     完成重量1    完成重量2     完成重量3       生产日期
1        111           1000                 200                  200             100              2014-04-29
2        111           1000                 100                  200              200              2014-04-30
3         222            500                  100                  100              100               2014-05-03


统计出每个订单完成重量的和(完成重量1+完成重量2+完成重量3)不等于该订单总重量的记录,订单总重量是不变的


得到的结果是:222


------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
create table [TB] (id int,订单号 int,订单总重量 int,完成重量1 int,完成重量2 int,完成重量3 int,生产日期 datetime)
insert into [TB]
select 1,111,1000,200,200,100,'2014-04-29' union all
select 2,111,1000,100,200,200,'2014-04-30' union all
select 3,222,500,100,100,100,'2014-05-03'

select * from [TB]

SELECT  订单号
FROM    ( SELECT    订单号 ,
                    MIN(订单总重量) AS 订单总重量 ,
                    SUM(完成重量1 + 完成重量2 + 完成重量3) AS 完成总重量
          FROM      TB
          GROUP BY  订单号
        ) T
WHERE   订单总重量 <> 完成总重量

------解决方案--------------------
--> 测试数据: [ta]
if object_id('[ta]') is not null 
drop table [ta]
go
create table [ta] ([id] int,[订单号] int,[订单总重量] int,[完成重量1] int,[完成重量2] int,[完成重量3] int,[生产日期] datetime)
insert into [ta]
select 1,111,1000,200,200,100,'2014-04-29' union all
select 2,111,1000,100,200,200,'2014-04-30' union all
select 3,222,500,100,100,100,'2014-05-03'

select 订单号
from ta
group by 订单号,订单总重量
having 订单总重量!=SUM(完成重量1+完成重量2+完成重量3)

222
  相关解决方案