当前位置: 代码迷 >> PB >> 请教这个sql如何写
  详细解决方案

请教这个sql如何写

热度:89   发布时间:2016-04-29 09:54:17.0
请问这个sql怎么写
原表:
id qi_hao dui_ying

1 2011001 8
2 2011001 9
3 2011002 5
4 2011002 6



将上表的数据取出,插入到新表是:
id qi_hao dui_one dui_two 

1 2011001 8 9  
2 2011002 5 6  


这个sql语句怎么写

------解决方案--------------------
insert into new_table(qi_hao,dui_one,dui_two ) as 
select qi_hao ,max(dui_ying),min(dui_ying) from your_table group by qi_hao
;

INSERT INTO的语法,视您具体的数据库,自己试一下.
------解决方案--------------------
试一下:
SQL code
declare @t table([id] [int] IDENTITY (1, 1), qi_hao varchar(10), dui_one int, dui_two int)insert into @t(qi_hao, dui_one, dui_two)select qi_hao, min(dui_ying), max(dui_ying)from 原表group by qi_hao--select * from @t
------解决方案--------------------
用游标吧。
------解决方案--------------------
C# code
string col[]string vs_sql_select,vs_sql_select1,vssql_UPDATEinteger i,jstring vs_qi_hao,vs_tempcol[1] = "dui_one"col[2] = "dui_two"col[3] = "dui_three"DECLARE dml Dynamic Cursor FOR sqlsa;DECLARE dml1 Dynamic Cursor FOR sqlsa;vs_sql_select = "SELECT qi_hao FROM 老表 GROUP BY qi_hao "PREPARE sqlsa From :vs_sql_select Using sqlca;OPEN Dynamic dml;i = 1DO WHILE sqlca.SQLCode = 0    i = i+1    vs_qi_hao = ""    FETCH dml INTO :vs_qi_hao;    if vs_qi_hao = "" then continue    //INSERT Into 新表 (id,qi_hao) Values(:i,:vs_qi_hao) ;    j = 1    vs_sql_select1 = "SELECT dui_ying FROM 老表 WHERE qi_hao = '"+vs_qi_hao+"' "    PREPARE sqlsa From :vs_sql_select1 Using sqlca;    OPEN Dynamic dml1;    DO WHILE sqlca.SQLCode = 0        j ++        FETCH dml INTO :vs_temp;            vssql_UPDATE = "UPDATE 新表 SET "+col[j]+" = '"+vs_temp+"' WHERE qi_hao = '"+vs_qi_hao+"' "            EXECUTE Immediate :vssql_UPDATE Using sqlca;    LOOPLOOP
  相关解决方案