2016-04-06 33 views
0

Belirli satırlar için metni bir hücreye birleştirmek için STUFF işlevini kullanmaya çalışıyorum. VARCHAR değerleri için iyi çalışır, ancak bir DATETIME değeriyle STUFF kullandığımda bir hata alırım: "Bir varchar veri türünün bir datetime veri türüne dönüştürülmesi aralık dışı bir değere neden oldu." Değeri yayınlamaya çalıştım ama beklediğim değerleri döndürmüyor. Bir şeySQL STUFF DATETIME Tüm değerleri geri döndürmez

gibi

" Mar 29 2016 9:42AM, Mar 31 2016 9:42AM, Mar 31 2016 9:43AM"

olurdu her CreatedDate satırda dönmeye çalışıyorum ama sadece değerlerden birini sergiliyor Ne

. ..

SELECT 
[KEY] 
,STUFF((SELECT distinct ', ' + [Code] FROM #tempTable t WHERE t.[KEY]=tt.[KEY] FOR XML PATH('')),1,1,'') AS [Code] 
,STUFF((SELECT distinct ', ' + CAST([CreatedDate] AS NVARCHAR(100)) FROM #tempTable t WHERE t.[KEY]=tt.[KEY] FOR XML PATH('')),1,1,'') AS [CreatedDate] 
FROM #tempTable tt 
Group by KEY 
+1

Eğer 'şeyler' işlevini unutursanız ve basitçe 'cast' (nvarchar (100) olarak oluşturulduğunda) seçeneğini seçerseniz ne olur? –

+0

Örneğinizin oluşturduğu tarih değerleri – TheGameiswar

+0

verebilir miyim? anahtar değeri 12345 ve bu belirli anahtar değerinin üç kaydı vardır. İlk kayıttan 12345 anahtarına kadar olan tarih Mar 29 2016 9:42, ikinci kayıt tarihinden Mar 31 2016 9:42 ve üçüncü kayıttan Mar 31 2016 9:43 AM. – BrettKB

cevap

0

o question..below değil sorgunun kısmı repro.further şeyler alışkanlık size herhangi bir sorun neden var olduğunu görünüyor: - İşte benim sorgunun bir parçası olan -bu ..

declare @dt table 
(
id datetime 
) 
insert into @dt 
select 'Mar 29 2016 9:42AM' union 
select 'Mar 31 2016 9:42AM' union select 'Mar 31 2016 9:43AM' 

select id,stuff((select ','+ convert(varchar,id) from @dt 
for xml path('')),1,1,'') 
from @dt 

besbelli doesnt iş -Bu ve size sorguda bu yapmıyorlar çalışır

declare @dt table 
(
id datetime 
) 
insert into @dt 
select 'Mar 29 2016 9:42AM' union 
select 'Mar 31 2016 9:42AM' union select 'Mar 31 2016 9:43AM' 

select id,stuff((select ','+ id from @dt 
for xml path('')),1,1,'') 
from @dt 

Orada datetime olarak varchar olarak sakladığınız ve datetime'a dönüştürdüğünüz bir yer olduğu anlaşılıyor.

Daha az görüyorsanız, herhangi bir değerin kırpılmasına neden olmaz. değerler, tek tek sütunlara bakmak gerekir

İlgili konular