原始資料如下,需要將成績列里面的各科成績單獨讀取一條記錄
班級 學生 學號 成績
五 張三 ’00001 語文,100|數學,95|英文,100
六 李四 ‘00002 語文,92|數學,99|英文,86
一 王五 ’00003 語文,89|數學,100|英文,91
實作效果如下:
班級 學生 學號 學科 分數
五 張三 ’00001 語文 100
五 張三 ’00001 數學 95
五 張三 ’00001 英文 100
六 李四 ‘00002 語文 92
六 李四 ‘00002 數學 99
六 李四 ‘00002 英文 86
一 王五 ’00003 語文 89
一 王五 ’00003 數學 100
一 王五 ’00003 英文 91
請教一下,通過SQL如何實作,謝謝。
uj5u.com熱心網友回復:
--測驗資料
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([班級] nvarchar(21),[學生] nvarchar(22),[學號] nvarchar(25),[成績] nvarchar(39))
Insert #T
select N'五',N'張三',N'00001',N'語文,100|數學,95|英文,100' union all
select N'六',N'李四',N'00002',N'語文,92|數學,99|英文,86' union all
select N'一',N'王五',N'00003',N'語文,89|數學,100|英文,91'
Go
--測驗資料結束
SELECT 班級,
學生,
學號,
SUBSTRING(t.value, 1, CHARINDEX(',', t.value) - 1) AS 學科,
SUBSTRING(t.value, CHARINDEX(',', t.value) + 1, LEN(t.value)) AS 成績
FROM #T
CROSS APPLY
(SELECT * FROM STRING_SPLIT(成績, '|')) t;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/226746.html
標籤:基礎類
