sql合並多行
㈠ sql按照條件多行合並問題
create
table
##b
as
(select
ID1,ID2,ID3,sum(Number)
from
表
group
by
ID1,ID2,ID3)
//把記錄合並後嘩改放到臨時表##b
Delete
from
表
//刪除表原記錄
create
table
表
as
(select
ID1,ID2,ID3,Number
from
##b)
//把合並後的記錄寫回表
回樓主咐派:
刪除重復記錄只保留一條:
Delete
表
Where
ID
Not
In
(Select
Max(ID)
From
表
Group
By
name)
只衡蘆賀查詢不重復記錄,不做刪除:
SELECT
distinct(name)
as
name
From
表
㈡ 如何把SQL Server多行查詢結果合並在一行中
如果你要取的值是AdminName, 表應該還有一個標識來做復合組鍵, 就是最最終想要結果戚伏賣的col title(admin1, admin2).
假如結構廳瞎如下高逗:
㈢ SQL 多行多列數據清洗合並為一行
SELECT
A,
GROUP_CONCAT( B SEPARATOR ',' ),
GROUP_CONCAT( C SEPARATOR ',' )
FROM
table_name
GROUP BY
A
1.GROUP_CONCAT()中的值為你要合並的數據的欄位名;
2.SEPARATOR 函數是用來分隔這些要合並的數據的 ,' ' 中是你要用哪個符號來分隔,可以直接不填符號默認為空值;
2.必須要用GROUP BY 語句來進行分組管理,不然所有的數據都會被合並成一條記錄
參考鏈接
https://www.cnblogs.com/shoshana-kong/p/11147690.html
㈣ 如何用sql語句將多行合並成一行
select id ,time,sum(2),sum(3),sum(4)... from 表
group by id,time
order time
如果腔銷拍time 不是字元類斗則型分伍羨組分的不對可以直接轉成字元類型到天再用
㈤ SQL多行合並為一行,SQL語句如何寫
最簡捷直觀的方法就是利用分組
selectID,
Sum(語文)語文,
Sum(數學)數學,
Sum(英語)英語
fromscores
groupbyID
你可以直接用下面的語句在SQL Server中測試結果:
DECLARE@ScoresVartable(
IDintNOTNULL,
Chineseint,
Mathint,
Englishint);
Insertinto@ScoresVar
values(1,70,null,null)
Insertinto@ScoresVar
values(1,null,80,null)
Insertinto@ScoresVar
values(1,null,null,90)
Insertinto@ScoresVar
values(2,75,null,null)
Insertinto@ScoresVar
values(2,null,85,null)
Insertinto@ScoresVar
values(2,null,null,95)
selectID,
SUM(Chinese)Chinese,
Sum(Math)Math,
Sum(English)English
from@ScoresVar
groupbyID
還有一種方法,可能更通用一點,利用 FOR XML PATH 和STUFF函數來做,雖然復雜,但是對表的數據類型無限制。
還是上面的測試數據,你可以通過下面的代碼來得到你想要的數據:
SELECTID,
STUFF((SELECT','+Cast(A.Chineseasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsChinese,
STUFF((SELECT','+Cast(A.Mathasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsMath,
STUFF((SELECT','+Cast(A.Englishasvarchar)
[email protected]=B.IDFORXMLPATH('')),1,1,'')AsEnglish
From@ScoresVarB
GroupByID
--輸出結果
IDChineseMathEnglish
1708090
2758595
㈥ SQL 將屬於同一個ID下的多行數據合並到一行
mssql下
createTable#myfal(IDint,data1varchar(20),data2varchar(20))
insertinto#myfalvalues(1,1,'仔族辯')
insertinto#myfalvalues(1,1.1,'')
insertinto#myfalvalues(1,'',0.3)
insertinto#myfalvalues(2,1,'')
insertinto#myfalvalues(2,'',1.2)
select*from#myfal
selectID,SUM(casewhendata1=''then穗悄0elseConvert(float,data1)end)data1,
SUM(casewhendata2=''then0elseConvert(float,data2)end)data2from#myfal
group念缺byid
droptable#myfal
㈦ sql語句多行合並為一行
用多個欄位分組就行,SQL如下
SELECTA,B,C,SUM(D)FROMTABLEGROUPBYC,A,B
㈧ SQL 多行數據合並成一行
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'