假设我有下表:
ID: STR:
01 abc
02 abcdef
03 abx
04 abxy
05 abxyz
06 abxyv
我需要使用一个SQL查询,它返回ID
列,并将相应字符串的出现作为其他行中字符串的前缀。例如。上表所需的结果:
ID: OCC:
01 2
02 1
03 4
04 3
05 1
06 1
答案 0 :(得分:3)
你可以JOIN
表格自己和GROUP BY
ID来获得结果。
SELECT t1.ID, COUNT(*)
FROM ATable t1
INNER JOIN ATable t2 ON t2.Str LIKE t1.Str + '%'
GROUP BY
t1.ID
有些说明:
Str
列答案 1 :(得分:1)
可以使用以下代码在SQL Server T-SQL中执行此操作。 警告:我不保证使用大型数据集时这将如何执行!
Declare @Table table
(
Id int,
String varchar(10)
)
Insert Into @Table
( Id, String )
Values ( 1, 'abc' ),
( 2, 'abcdef' ),
( 3, 'abx' ),
( 4, 'abxy' ),
( 5, 'abxyz' ),
( 6, 'abxyv' )
Select t.Id,
t.String
From @Table as t
Inner Join @Table as t2 On t2.String Like t.String + '%'
Order By t.Id
Select t.Id,
Count(*) As 'Count'
From @Table as t
Inner Join @Table as t2 On t2.String Like t.String + '%'
Group By t.Id
Order By t.Id