分组合并数据?
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 FCloseProfitLossunionselect '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) tgroup 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 02012-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
--你后面几列怎么来的?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 FCloseProfitLossunionselect '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) tgroup by FDate,FContract,FBuySell
[解决办法]
--问题还在于你怎么处理这些不同的列,从需求着手解决这个问题更实际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 FCloseProfitLossunionselect '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) tgroup 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才对啊
--try--把结果集插入到临时表#tbselect FDate,FContract,FBuySell,sum(FNumber) FNumber,FPrice,sum(FFee)FFee, sum(FProfitLoss) FProfitLoss,FCloseDate,FClosePriceinto #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 FCloseProfitLossunion allselect '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) tgroup by FDate,FContract,FBuySell,FPrice,FCloseDate,FClosePrice-- select * from #tb --合并数据select FDate,FContract,FBuySell,sum(FNumber)as FNumber,sum(FPrice)as FPrice,sum(FFee)as FFee,sum(FProfitLoss)as FProfitLoss, '2012-07-03' as FCloseDate,sum(FClosePrice)as FClosePrice from #tbgroup by FDate,FContract,FBuySell-->合并后结果集--结果集字段名省略了,另外你后面几行数据不知道怎么来的,我就没写/*2012-07-03 ZN1210 买 10.00 29400.00 80.00 -1000.00 2012-07-03 14735.00*/