У меня есть таблица, в которой указаны две или более разных дат для одного идентификатора.Я хочу объединить все даты для одного идентификатора.Пример кода приведен ниже.
create table number(id nvarchar(255), billdate nvarchar(255))
insert into number(id,billdate) values ('56465','12/10/2011'),('56465','02/11/2011'),
('46462','12/09/2009'),('46462','12/06/2010'),('32169','12/22/2009'),
('32169','12/31/2011'),('86835','12/10/2010'),('86835','22-Jan-2010'),
('65641',''),('65641','12-Aug-2009'),('22458','25-Aug-2007'),('22458','')
Для объединения строк я использую путь XML, как показано ниже
select Main.id,LEFT(Main.billdate,nullif(LEN(Main.billdate)-1,-1)) as "billdate"
from (select distinct ST2.id,(SELECT ST1.billdate + ',' AS [text()]
from NUMBER ST1 where ST1.id=ST2.id ORDER BY ST1.id FOR XML PATH (''))billdate
from NUMBER ST2)[Main]
Он отлично работает для данных этого примера, но проблема в том, что у меня естьогромные данные, и когда я применяю этот XML-код пути, запятая не отображается, если дата NULL, как для идентификатора 65641. Для меня важно отображать запятую вместо NULL.Куда я иду не так?Кто-нибудь может подсказать, почему вместо NULL не отображается запятая?