DECLARE @abc intDECLARE @def intDECLARE @ghi intDECLARE @jkl intDECLARE @mno intDECLARE @pqr intDECLARE @stu intDECLARE @vw intDECLARE @xzy intSET @abc = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%abc%')SET @def = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%def%')SET @ghi = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%ghi%')SET @jkl = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%jkl%')SET @mno = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%mno%')SET @pqr = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%pqr%')SET @stu = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%stu%')SET @vw = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%vw%')SET @xzy = (SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%xyz%')
SELECT @abc = COUNT(CASE WHEN ColumnName LIKE '%abc%' THEN 1 END), @def = COUNT(CASE WHEN ColumnName LIKE '%def%' THEN 1 END), @ghi = COUNT(CASE WHEN ColumnName LIKE '%ghi%' THEN 1 END), @jkl = COUNT(CASE WHEN ColumnName LIKE '%jkl%' THEN 1 END), @mno = COUNT(CASE WHEN ColumnName LIKE '%mno%' THEN 1 END), @pqr = COUNT(CASE WHEN ColumnName LIKE '%pqr%' THEN 1 END), @stu = COUNT(CASE WHEN ColumnName LIKE '%stu%' THEN 1 END), @vw = COUNT(CASE WHEN ColumnName LIKE '%vw%' THEN 1 END), @xzy = COUNT(CASE WHEN ColumnName LIKE '%xyz%' THEN 1 END) FROM TableName
DECLARE @groups int = 9;;WITH asciichar(n,c) AS ( SELECT (65), CHAR(65) UNION ALL SELECT n+1, CHAR(n+1) FROM asciichar WHERE n+1<=90),groups AS ( SELECT NTILE(@groups) OVER (ORDER BY n) AS groupid, * FROM asciichar ),ntileMatrix AS( SELECT groupid, MIN(c) OVER (PARTITION BY groupid)+'-'+ MAX(c) OVER (PARTITION BY groupid) AS [group], n AS [ASCII], c AS [CHAR] FROM groups ),people AS( SELECT LEFT(LastName,1) AS c1, LastName+', '+FirstName AS Name FROM AdventureWorks2008R2.person.person )SELECT nm.[group], p.NameFROM ntileMatrix nm CROSS JOIN people pWHERE [CHAR]=c1
group Name----- -------------------------------------A-C Abbas, SyedA-C Abel, CatherineA-C Abercrombie, Kim....Y-Z Zukowski, JakeY-Z Zwilling, MichaelY-Z Zwilling, Michael
DECLARE @groups int = 9;;WITH asciichar(n,c) AS ( SELECT (65), CHAR(65) UNION ALL SELECT n+1, CHAR(n+1) FROM asciichar WHERE n+1<=90),groups AS ( SELECT NTILE(@groups) OVER (ORDER BY n) AS groupid, * FROM asciichar ),ntileMatrix AS( SELECT groupid, MIN(c) OVER (PARTITION BY groupid)+'-'+ MAX(c) OVER (PARTITION BY groupid) AS [group], n AS [ASCII], c AS [CHAR] FROM groups ),people AS( SELECT LEFT(LastName,1) AS c1, LastName+', '+FirstName AS Name FROM AdventureWorks2008R2.person.person ),Totals AS( SELECT nm.[group], p.Name FROM ntileMatrix nm CROSS JOIN people p WHERE [CHAR]=c1 )SELECT [group], COUNT([group]) AS groupCountFROM TotalsGROUP BY [group]
group groupCount----- -----------A-C 3502D-F 1111G-I 2572J-L 2347M-O 2061P-R 3195S-U 2800V-X 1552Y-Z 832
DECLARE @groups int = 3;
group groupCount----- -----------A-I 7185J-R 7603S-Z 5184
;WITH asciichar(n, c) AS (SELECT n=64+number, CHAR(64+number)FROM [master].dbo.spt_values TallyWHERE [Type] = 'P' AND Number BETWEEN 1 AND 26)SELECT *FROM asciichar