Thứ Tư, 19 tháng 1, 2011

Đánh số thứ tự trong Sql Server

--Đánh số thứ tự

CREATE TABLE [dbo].[Numbers](

No int default 0,

Ma1 char(16) NULL,

Ma2 char(16) NULL

)

GO

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, '001', '')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, '001', 'VT01')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, '001', 'VT02')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, '001', 'VT03')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'ABC', '')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'ABC', 'VT01')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'ABC', 'VT04')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'XYZ', '')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'XYZ', 'VT05')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'XYZ', 'VT06')

INSERT Numbers (No, Ma1, Ma2)

VALUES(0, 'XYZ', 'VT07')

GO

--Khai báo biến

DECLARE @num int

--Trường hợp đánh số liên tục

SET @num = 0

UPDATE Numbers

SET @num = No = @num + 1

SELECT * FROM Numbers

--Reset lại số

SET @num = 0

UPDATE Numbers

SET @num = No = CASE WHEN RTRIM(Ma2) = '' THEN 0 ELSE @num + 1 END

SELECT * FROM Numbers

--Đánh số ngắt quãng

SET @num = 0

UPDATE Numbers

SET @num = CASE WHEN RTRIM(Ma2) = '' THEN @num ELSE @num + 1 END,

No = CASE WHEN RTRIM(Ma2) = '' THEN 0 ELSE @num END

GO

SELECT * FROM Numbers

DROP TABLE [dbo].[Numbers]

Không có nhận xét nào:

Đăng nhận xét