У меня есть список идентификаторов образцов для сайта в формате: Sitename, Sample Number, так что для данного сайта существует n номеров образцов.Например, данные могут быть:
site1 | 1
site1 | 2
и т. Д. С произвольным n.
Используя следующий пример в качестве аналогичного примера, эти данные ниже получат ответ из последнего оператора select:
CREATE TABLE #SiteWithId(SiteId VARCHAR(50), SampleNumber INT)
INSERT INTO #SiteWithId
(
SiteId,
SampleNumber
)
values
( 'test', -- SiteId - varchar(50)
1 -- SampleNumber - int
),
('test',2),
('test',3),
('test',4),
('test',6),
('test',7)
SELECT * FROM #SiteWithId
DROP TABLE #SiteWithId
--the answer
SELECT 'test', '1-4,6-7'
Обратите внимание, что отсутствующий элемент создает разрыв в окончательном ответе.
Я знаю, что могу перебрать набор данных в C # и создать такой элемент.Но кто-нибудь знает, чтобы создать такое значение, используя только SQL, чтобы я мог просто выложить необходимые значения для отчета?Я думаю, что я мог бы также сделать цикл в SQL, но я боюсь, что это будет невозможно масштабировать, поскольку это не совсем то, что SQL для этого.
Есть ли лучший способ сделать это, кроме цикла в SQLили c #?