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

分结合并数据

2012-10-20 
分组合并数据?SQL codeselect FDate,FContract,FBuySell,sum(FNumber) FNumber,FPrice,sum(FFee)FFee,sum(

分组合并数据?

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 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



[解决办法]
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 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
[解决办法]
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 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才对啊


SQL code
--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*/ 

热点排行