1. 怎麼用sql語句將一張表中ID相同的行的內容合並在一起
工具/材料:Management Studio。
1、首先在桌面上,點擊「Management Studio」圖標。
2. SQL 將屬於同一個ID下的多行數據合並到一行
selectid,sum(isnull(data1,0))data1,sum(isnull(data2,0))data2from表1groupbyid
sqlserver寫法,其他資料庫略有不同
3. sql語句如何合並相同id下的多行數據在一行 例如:
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;
4. 請教SQL可以把ID相同的兩行數據合並到一起嗎
create Function GetName12(@id char(10))
Returns Nvarchar(2000)
As
Begin
Declare
@S Nvarchar(2000)
Set @S=''
Select @S=@S+','+name from 表1 Where id=@id Order By name
Return (Stuff(@S,1,1,'')) End
--select id, dbo.GetName12( id) as Field from 表1
5. sql查詢結果中有id相同的欄位如何對查詢結果進行操作將id相同的合並為一條數據
也不說你是用的什麼資料庫,sqlserver為例
建表
createtableclass
(classidint,
classnamevarchar(10),
teacheridint)
insertintoclassvalues(1,'一班',1)
insertintoclassvalues(1,'一班',2)
insertintoclassvalues(2,'三班',1)
createtableteacher
(teacheridint,
teachernamevarchar(10))
insertintoteachervalues(1,'zhangsan')
insertintoteachervalues(2,'lisi')
執行
withtbas
(selecta.classid,a.classname,b.teachername
fromclassaleftjointeacherb
ona.teacherid=b.teacherid)
selectclassid,classname,teachername=stuff((select','+=tb.classidandclassname=tb.classnameforxmlpath('')),1,1,'')
fromtb
groupbyclassid,classname
結果截圖
6. sql語句查出多行數據,如何將ID相同的行並成一行,且不相同的欄位合成一個字元串
我個人建議你把邏輯寫在代碼裡面
像這種資料庫操作很好資源的,嚴重影響效率
可以先取出一個list
List<User> resultList = 資料庫返回
Map<String,String> map = new HashMap<String,String>();
for(User user : resultList){
String val ;
if(map.containsKey(user.getID().toString())){
val = map.get(user.getID().toString());
val = val + user.getAnotherItem();
map.remove(user.getID().toString());
}else{
val = user.getAnotherItem();
}
map.put(user.getID().toString(),val);
}
//map裡面的東西就是你要的
7. SQL 如何將一個表中的兩條或多條擁有相同ID的記錄合並為一條
一、創建表:
create table stuUnion
(
sid int identity primary key,
cid int,
id varchar(500)
)
二、添加數據:
insert into stuUnion
elect 1,'a' union
select 1,'b' union
select 2,'c' union
select 2,'d' union
select 3,'e' union
select 3,'f' union
select 3,'g'
三、用標量函數查詢:
創建標量函數:
create function b(@cid int)
returns varchar(500)
as
begin
declare @s varchar(500)
select @s=isnull(@s+'','')+rtrim(id)+',' from stuUnion where cid=@cid
return @s
end;
用標量函數查詢:
select cid,dbo.b(cid) as id from stuUnion group by cid
用sqlserver的xml:
select cid,ID=STUFF((select ' '+rtrim(id)+',' from stuUnion where st.cid=cid order by id for XML path('')),1,1,'') from stuUnion st group by cid
8. sql語句,合並多條記錄中的相同欄位。
假如你的表結構如下:
create table tb_test
(
商店id int,
時間id int,
用戶id int,
購買產品id int
)
可以創建如下聚合函數:
create function fn_test(@商店id int,@時間id int,@用戶id int)
returns varchar(8000)
as
begin
declare @ret varchar(8000)
set @ret=''
select @ret=@ret+convert(varchar(100),購買產品id int)+',' from tb_test where 商店id=@商店id and 時間id=@時間id and 用戶id=@用戶id
select @ret=left(@ret,len(@ret)-1)
return(@ret)
end
然後用如下SQL語句進行查詢即可。
(@商店id int,@時間id int,@用戶id int
select 商店id,時間id,用戶id,dbo.fn_test(商店id,時間id,用戶id)as 購買產品id
from tb_test
group by 商店id,時間id,用戶id
還有一種更簡單的辦法,在2005上測試沒有問題,2008上可自己驗證一下:
select
商店id,時間id,用戶id,
stuff((select ','+convert(varchar(10),購買產品id) from tb_test b
where 商店id=a.商店id and 時間id=a.時間id and 用戶id=a.用戶id
for xml path('')),1,1,'')
from tb_test a
group by 商店id,時間id,用戶id