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

分组合并数据?
SQL code

select FDate,FContract,FBuySell,sum(FNumber) FNumber,FPrice,sum(FFee)FFee,
       sum(FProfitLoss) FProfitLoss,FCloseDate,FClosePrice
 from (
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   NULL FCloseDate,0.00 FClosePrice ,0.00 FCloseNumber ,0.00 FCloseFee ,0 FCloseProfitLoss
union
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   '2012-07-03' FCloseDate,14735.00 FClosePrice ,1.00 FCloseNumber ,10.00 FCloseFee ,175 FCloseProfitLoss
) t

group by FDate,FContract,FBuySell,FPrice,FCloseDate,FClosePrice

数据怎么合并成一条
2012-07-03    ZN1210    买    5.00    14700.00    40.00    -500.00    NULL    0.00    0.00    0.00    0
2012-07-03    ZN1210    买    5.00    14700.00    40.00    -500.00    2012-07-03    14735.00    1.00    10.00    175

==》》
2012-07-03    ZN1210    买    10.00    14700.00    80.00    -1000.00    2012-07-03    14735.00    1.00    10.00    175




------解决方案--------------------
SQL code

--你后面几列怎么来的?
select FDate,FContract,FBuySell,sum(FNumber) FNumber,max(FPrice),sum(FFee)FFee,
       sum(FProfitLoss) FProfitLoss,max(FCloseDate),max(FClosePrice)
 from (
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   NULL FCloseDate,0.00 FClosePrice ,0.00 FCloseNumber ,0.00 FCloseFee ,0 FCloseProfitLoss
union
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   '2012-07-03' FCloseDate,14735.00 FClosePrice ,1.00 FCloseNumber ,10.00 FCloseFee ,175 FCloseProfitLoss
) t

group by FDate,FContract,FBuySell

------解决方案--------------------
SQL code

--问题还在于你怎么处理这些不同的列,从需求着手解决这个问题更实际
select FDate,FContract,FBuySell,sum(FNumber) FNumber,FPrice,sum(FFee)FFee,
       sum(FProfitLoss) FProfitLoss,max(FCloseDate) FCloseDate, max(FClosePrice)FClosePrice
 from (
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   NULL FCloseDate,0.00 FClosePrice ,0.00 FCloseNumber ,0.00 FCloseFee ,0 FCloseProfitLoss
union
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   '2012-07-03' FCloseDate,14735.00 FClosePrice ,1.00 FCloseNumber ,10.00 FCloseFee ,175 FCloseProfitLoss
) t

group by FDate,FContract,FBuySell,FPrice

------解决方案--------------------
-->合并前
2012-07-03 ZN1210 买 5.00 14700.00 40.00 -500.00 NULL 0.00 0.00 0.00 0
2012-07-03 ZN1210 买 5.00 14700.00 40.00 -500.00 2012-07-03 14735.00 1.00 10.00 175

-->合并后
2012-07-03 ZN1210 买 10.00 14700.00 80.00 -1000.00 2012-07-03 14735.00 1.00 10.00 175
标红处的结果集应该有错吧,应该是29400.00才对啊


SQL code
--try
--把结果集插入到临时表#tb
select FDate,FContract,FBuySell,sum(FNumber) FNumber,FPrice,sum(FFee)FFee,
       sum(FProfitLoss) FProfitLoss,FCloseDate,FClosePrice
into #tb
 from (
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   NULL FCloseDate,0.00 FClosePrice ,0.00 FCloseNumber ,0.00 FCloseFee ,0 FCloseProfitLoss
union all
select 
'2012-07-03' FDate ,'ZN1210' FContract,'买' FBuySell,5.00 FNumber,14700.00 FPrice,40.00 FFee,-500.00 FProfitLoss ,
   '2012-07-03' FCloseDate,14735.00 FClosePrice ,1.00 FCloseNumber ,10.00 FCloseFee ,175 FCloseProfitLoss
) t

group by FDate,FContract,FBuySell,FPrice,FCloseDate,FClosePrice

-- select * from #tb
 
--合并数据
s