本文目錄一覽:
- 1、SQL使數據兩行變一行怎麼寫?
- 2、怎麼樣將sql查詢出來的多行數據變成一行多
- 3、SQL多行合併為一行,SQL語句如何寫
- 4、SQL 多行多列數據清洗合併為一行
- 5、sql中怎樣把同一張表上的兩行記錄合併在一行上展示
SQL使數據兩行變一行怎麼寫?
不需要使用lead函數,用子查詢就可以實現了
select s.id,
s.time,
(select max(time)
from table
where id = s.id
and status = 1
and name = s.name),
s.name
from table s
where status = 0
怎麼樣將sql查詢出來的多行數據變成一行多
怎麼樣將sql查詢出來的多行數據變成一行多
sql查詢結果如果只有一條,就會顯示一行,行數代表了結果數,列數的多少取決於你所查詢的字段數。
SQL多行合併為一行,SQL語句如何寫
最簡捷直觀的方法就是利用分組
select ID,
Sum(語文) 語文,
Sum(數學) 數學,
Sum(英語) 英語
from scores
group by ID
你可以直接用下面的語句在SQL Server中測試結果:
DECLARE @ScoresVar table(
ID int NOT NULL,
Chinese int,
Math int,
English int);
Insert into @ScoresVar
values(1 ,70, null, null)
Insert into @ScoresVar
values(1 ,null,80, null)
Insert into @ScoresVar
values(1 ,null, null, 90)
Insert into @ScoresVar
values(2 ,75, null, null)
Insert into @ScoresVar
values(2 ,null,85, null)
Insert into @ScoresVar
values(2 ,null, null, 95)
select ID,
SUM(Chinese) Chinese,
Sum(Math) Math,
Sum(English) English
from @ScoresVar
group by ID
還有一種方法,可能更通用一點,利用 FOR XML PATH 和STUFF函數來做,雖然複雜,但是對錶的數據類型無限制。
還是上面的測試數據,你可以通過下面的代碼來得到你想要的數據:
SELECT ID,
STUFF((SELECT ‘,’ + Cast(A.Chinese as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH(”)),1,1,”) As Chinese,
STUFF((SELECT ‘,’ + Cast(A.Math as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH(”)),1,1,”) As Math,
STUFF((SELECT ‘,’ + Cast(A.English as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH(”)),1,1,”) As English
From @ScoresVar B
Group By ID
— 輸出結果
ID Chinese Math English
1 70 80 90
2 75 85 95
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 語句來進行分組管理,不然所有的數據都會被合併成一條記錄
參考鏈接
sql中怎樣把同一張表上的兩行記錄合併在一行上展示
如果只有2條記錄可以用ORDER BY 分別取出兩條記錄,然後用LEFT JOIN 或者 “=”可行
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/158343.html