SQL將屬於同ID下的多行資料合併到一行

2022-02-18 01:29:51 字數 5392 閱讀 3413

1樓:匿名使用者

select id,sum(isnull(data1,0)) data1,sum(isnull(data2,0)) data2 from 表1 group by id

sqlserver寫法,其他資料庫略有不同

2樓:玩轉資料處理

mssql下

create table #myfal (id int,data1 varchar(20),data2 varchar(20))

insert into #myfal values (1,1,'')

insert into #myfal values (1,1.1,'')

insert into #myfal values (1,'',0.3)

insert into #myfal values (2,1,'')

insert into #myfal values (2,'',1.2)

select * from #myfal

select id,sum(case when data1 = '' then 0 else convert(float,data1) end) data1 ,

sum(case when data2 = '' then 0 else convert(float,data2) end) data2 from #myfal

group by id

drop table #myfal

3樓:

select distinct id ,sum(data1),sum(data2) from [table] group by id

sql語句如何合併相同id下的多行資料在一行 例如: 30

4樓:it技術小店

select id,

max(case when rn = 1 then op end ) op_1,

max(case wehn rn = 1 then result end ) result_1,

max(case when rn = 1 then else end ) else_1,

max(case when rn = 2 then op end ) op_2,

max(case wehn rn = 2 then result end ) result_2,

max(case when rn = 2 then else end ) else_2

from (

select a.*,

row_number() over(partition by id order by else) rn

from a)

group by id;

sql語句查出多行資料,如何將id相同的行併成一行,且不相同的欄位合成一個字串

5樓:遊刃香菸

相同id合併成一行,只需要用聯合查詢就可以了

不相同的欄位合成一個字串只需要連線符+然後 as一個別名就ok了~

6樓:興

我個人建議你把邏輯寫在**裡面

像這種資料庫操作很好資源的,嚴重影響效率

可以先取出一個list

listresultlist = 資料庫返回mapmap = new hashmap();

for(user user : resultlist)elsemap.put(user.getid().tostring(),val);

}//map裡面的東西就是你要的

7樓:獨唱丶年華

select distinct 欄位 from 表名

怎麼把多行資料按照id合併為一行?sql語句應該如何寫啊?**急求。具

用sql或函式如何將id相同的行合併到一行

8樓:一騎當後

select *

from (select t.id,

lead(t.name, 0, '') over(partition by t.id order by t.id),

lead(t.name, 1, '') over(partition by t.id order by t.id),

lead(t.name, 2, '') over(partition by t.id order by t.id),

row_number() over(partition by t.id order by t.id) as rowc

from tac t)

where rowc = 1;

看看這個是不是你要的~

請教sql可以把id相同的兩行資料合併到一起嗎? 5

9樓:匿名使用者

如果每個id的資料都有兩行 ,可以使用下面的語句 sql server

select identity(int, 1,1) sx , a.id, a.name+','+b.name c into tmpdata from table1 a

inner join table1 b on (a.id=b.id and a.name<>b.name)

select * from tmpdata where sx % 2 <> 0

10樓:匿名使用者

只限定存在id相同的兩行資料:

select a.id,rtrim(a.name)+','+b.name as 組合 from t a left join t b on a.id=b.id

where a.name>b.name

11樓:

oracle :

select id,wm_concat(name) from tablename

group by id

12樓:匿名使用者

insert (select id from table1 while id_table1=id_table) into table2 (id field)

13樓:匿名使用者

可以,你是什麼資料庫?mysql最容易了

sql 如何將一個表中的兩條或多條擁有相同id的記錄合併為一條?

14樓:

這個恐怕要用存貯過程或程式設計實現, 提個思路:

1) 建立一個同欄位結構的新表table22) 按col1排序

3) 迴圈每條記錄, 記錄每個欄位值到臨時變數中, 名為vcol1, vcol2...

if (col1 == 前一條記錄vcol1)累加vcol2, vcol3...(如果是字串則相連)else

將vcol1, vcol2...各欄位插入table2中4)最終table2應該是你想要的結果

15樓:枯枝淚

你好,如果是查詢出來顯示的話 直接 分組就行了

如果你要是 把上面的資料生成新的資料插入到表中的話...就直接插入操作.

希望能幫到你吧!

16樓:匿名使用者

不好弄,具體資料具體分析

17樓:秋色豔陽

select distinct * into temp_table from table_name

godelete from table_namegoinsert into table_name select * fromgo

18樓:匿名使用者

不清楚你的資料會不會有兩筆同時存在,但不同值的資料

如果只是上面的這種資料可以這樣來實現

select col1,max(col2) as col2,max(col3) as col3,max(col4) as col4 from table group by col1

sql 多行資料合併成一行

19樓:

group by 前面相同的欄位,後面不同的,用max取。

select m.member_id,

prefix_desc 'prefix:',

upper(first_name) 'first name:',

upper(last_name) 'last name:',

upper(email) 'email:',

lower(user_id) 'user id:',

replicate('*',len(password)) 'password:',

('****'+substring(license_no,5,4)) 'drivers licese number:',

replace(email_ind,'y','accept') 'email notification:',

replace(return_ind,'y','accept') 'heriz e-return',

max(case when tel_type= 'b' then tel_number end + ' '+replace(pref_phone_ind,'p','pref')) 'business phone',

max('('+ p.country_code + ')'+ case when tel_type= 'm' then tel_number end) 'mobile number',

max(case when tel_type= 'f' then tel_number end) 'fax'

from member m, license l, phone_fax p

where m.member_id = l.member_id

and m.member_id = p.member_id

and m.member_id = 'a000001'

group by

m.member_id,

prefix_desc 'prefix:',

upper(first_name) 'first name:',

upper(last_name) 'last name:',

upper(email) 'email:',

lower(user_id) 'user id:',

replicate('*',len(password)) 'password:',

('****'+substring(license_no,5,4)) 'drivers licese number:',

replace(email_ind,'y','accept') 'email notification:',

replace(return_ind,'y','accept') 'heriz e-return'

怎麼將oracle的sql檔案轉換成mysql的sql檔案

oracle和mysql的sql不完全相容,如果你要從oracle把資料傳遞到mysql中去,可以用kettle這樣的etl工具進行抽取和清洗。怎麼將sql檔案匯入mysql 先開啟cmd再進入mysql的bin目錄 cd d soft wamp bin mysql mysql5.0.51b bin...

同段根據不同條件更新的sql語句怎麼寫

沒太明白你的需求 比如,版 這樣?權 update ta set col1 select case tb.a 1000 then 1 else 0 end from tb where ta.id tb.aid where update tablename set col decode sql語句更新...

sql查詢表中id最大的一條資料怎麼寫

你想搜尋欄位中最大的數?用這個select max column name from table name 應該加主鍵條件吧 select from table a where id select max id from table where key a.key and key n select ...