1

Как получить уникальные несколько строк из одной строки для данных, разделенных каким-либо символом в одном запросе на выбор без функции разделения в SQL Server 2008 или выше.Как получить несколько строк из одной строки для данных, разделенных каким-либо символом в одном заявлении select

Пример:

ID Data            Name 
1 '2014-01-01,2014-01-02,2014-01-03,2014-01-04'  'A1' 
2 '2014-01-01,2014-01-02'        'B1' 
3 '2014-01-03,2014-01-05,2014-01-06,2014-01-07'  'A1' 


ID Data   Name 
1 '2014-01-01' 'A1' 
1 '2014-01-02' 'A1' 
1 '2014-01-03' 'A1' 
1 '2014-01-04' 'A1' 
3 '2014-01-05' 'A1' 
3 '2014-01-06' 'A1' 
3 '2014-01-07' 'A1' 
2 '2014-01-01' 'B1' 
2 '2014-01-02' 'B1' 
+1

Это может помочь [Как разделить разделенную запятую значения столбцов] (http://stackoverflow.com/questions/10581772/how-to-split-a-comma-separated -value к колонкам) –

ответ

0

проверить эту статью SQL Sentry на струнной расщеплению. Если перебирают разные методы, скорость каждого из них и любые подводные камни.

http://www.sqlperformance.com/2012/07/t-sql-queries/split-strings

Разделить строку и сделайте различные значения.

В приведенном ниже коде используется разделитель xml.

-- Just playing 
use tempdb; 
go 

-- drop the table 
if object_id('results') > 0 
drop table results 
go 

-- create the table 
create table results 
(
    id int, 
    data varchar(128), 
    name varchar(2) 
); 
go 

-- add data 
insert into results values 
(1,'2014-01-01,2014-01-02,2014-01-03,2014-01-04','A1'), 
(2,'2014-01-01,2014-01-02','B1'), 
(3,'2014-01-03,2014-01-05,2014-01-06,2014-01-07','A1'); 
go 

-- Just the data 
select * from results 

-- Split the data 
select distinct r.id, r.name, s.item 
from results r 
cross apply dbo.SplitStrings_XML(data, ',') s 

enter image description here