SQL: подсчет заданных элементов после усечения - PullRequest
0 голосов
/ 17 февраля 2011
select THING from FOLDER where THING like '%-%' and ...

, который возвращает такие вещи, как:

abc097-01
def982-02
ghi13344-01
ghi13344-02

Теперь мне нужно изменить этот запрос, чтобы я мог посчитать разные имена после усечения части после '-'.

Таким образом, для приведенного выше примера я получу 3 ("abc097", "def982" и "ghi13344").

Как мне написать это в SQL?*

Ответы [ 2 ]

1 голос
/ 17 февраля 2011
Declare @tmp table (field nvarchar(100))
insert into @tmp values ('abc097-01')
insert into @tmp values ('def982-02')
insert into @tmp values ('ghi13344-01')
insert into @tmp values ('ghi13344-02')

select COUNT(*),SUBSTRING(field,0,CHARINDEX('-',field))
from @tmp
group by SUBSTRING(field,0,CHARINDEX('-',field))


select distinct(SUBSTRING(field,0,CHARINDEX('-',field)))
from @tmp -- to get distinct records.
1 голос
/ 17 февраля 2011

Вы можете использовать CHARINDEX или PATINDEX , чтобы найти местоположение '-', а затем использовать LEFT или SUBSTRING функции:

select COUNT(DISTINCT SUBSTRING(THING, 1, PATINDEX('%-%', THING) - 1))
from FOLDER
where THING like '%-%'
...