Piling on
😎
IF OBJECT_ID(N'dbo.TBL_SAMPLE_ACTIVITY_DATA') IS NOT NULL DROP TABLE dbo.TBL_SAMPLE_ACTIVITY_DATA;
CREATE TABLE dbo.TBL_SAMPLE_ACTIVITY_DATA
(
Workid INT IDENTITY(1,1) NOT NULL
,Workname NVARCHAR(100) NOT NULL
,Activitycode NVARCHAR(100) NULL
);
INSERT INTO dbo.TBL_SAMPLE_ACTIVITY_DATA (Workname,Activitycode)
VALUES
(N'Drilling' ,N'S16-03779-01/016' )
,(N'planting' ,N'S16-03779-01/011' )
,(N'Field Work',NULL )
,(N'Lathe work',NULL )
,(N'planting' ,N'S16-03778-01/011' )
,(N'planting' ,N'S16-03777-01/011' )
;
SELECT
SAD.Workid
,SAD.Workname
,SAD.Activitycode
FROM dbo.TBL_SAMPLE_ACTIVITY_DATA SAD
ORDER BY ISNULL(SAD.Activitycode,N'ZZZZZZZZZZZZZZZZZZZZ')
,SAD.Workname;
;WITH BASE_DATA AS
(
SELECT
ROW_NUMBER() OVER
(
ORDER BY SAD.Activitycode
,SAD.Workname
) + CASE
WHEN SAD.Activitycode IS NOT NULL THEN 0
ELSE 2000000000
END AS SORT_RID
,SAD.Workid
,SAD.Workname
,SAD.Activitycode
FROM dbo.TBL_SAMPLE_ACTIVITY_DATA SAD
)
SELECT
BD.Workid
,BD.Workname
,BD.Activitycode
FROM BASE_DATA BD
ORDER BY BD.SORT_RID ASC;