Как посчитать общее количество результатов перед дефисом? - PullRequest
0 голосов
/ 17 апреля 2019

Я рассчитываю подсчитать количество результатов из запроса подсчета SQL, в настоящее время результаты имеют около 50 результатов, но на самом деле есть только 5 результатов ... результаты отображаются в формате, таком как:

test1-helpme1
test1-helpme3
test1-helpme4
test2-helpme1
test2-helpme2
test3-helpme4

Есть ли способ подсчитать только часть результатов testx?Результатов может быть сотни, поэтому числовая часть «теста» не может быть жестко задана

SELECT COUNT(*) as CountbyID, OriginalId FROM Table1 GROUP BY OriginalId;

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Если вы хотите количество различных вхождений шаблона, то:

SELECT 
  COUNT(DISTINCT LEFT(OriginalId, INSTR(OriginalId, '-') - 1)) as counter
FROM Table1 

или счетчик для каждого:

SELECT 
  LEFT(OriginalId, INSTR(OriginalId, '-') - 1) pattern,
  COUNT(*) as counter
FROM Table1
GROUP BY LEFT(OriginalId, INSTR(OriginalId, '-') - 1)
0 голосов
/ 17 апреля 2019

Да, вы можете использовать ВЛЕВО для группировки по подмножеству строки:

declare @test as table (test varchar(100))

insert into @test
Select 'test1-helpme1' UNION ALL
Select 'test1-helpme3' UNION ALL
Select 'test1-helpme4' UNION ALL
Select 'test2-helpme1' UNION ALL
Select 'test2-helpme4'

Select count(*) as countbyID, left(test,5) as originalid from @test group by left(test,5)
...