由於Lamak指出,這是最好的留到表現層,但如果你必須這樣做在SQL現在。 ..然後這使用stuff()
with select ... for xml path ('')
method of string concatenation。
select
orgnl_pk
, [type]
, [text]=stuff(
(
select char(10) +i.[text]
from t as i
where i.orgnl_pk = t.orgnl_pk
and i.[type]=t.[type]
order by i.pk
for xml path (''), type).value('.','nvarchar(max)')
,1,0,'')
from t
group by orgnl_pk, [type]
rextester演示:http://rextester.com/GPFIMO37322
回報:
+----------+------+--------------+
| orgnl_pk | type | text |
+----------+------+--------------+
| 1 | one | • Line One |
| | | • Line Two |
| | | • Line Three |
| 1 | two | • Line One |
| 3 | one | • Line One |
| 3 | two | • Line One |
| | | • Line Two |
+----------+------+--------------+
更新字符(0x0007):
select
orgnl_pk
, [type]
, [text]=replace(stuff(
(
select char(10)+replace(i.[text],nchar(0x0007),'$BEL$')
from t as i
where i.orgnl_pk = t.orgnl_pk
and i.[type]=t.[type]
order by i.pk
for xml path (''), type).value('.','nvarchar(max)')
,1,1,''),'$BEL$',nchar(0x0007))
from t
group by orgnl_pk, [type]
本應在表示層來完成,而不是在數據庫級別 – Lamak
我同意@拉瑪克在這裏。企業可能會要求它看起來像這樣,你需要提供。但數據庫應該將數據返回給您的應用程序,然後對其進行格式化。 –
我同意你們兩人的看法,這也是我最初的迴應。但是,公司內部可用的當前工具和安全級別要求這樣做。我知道這是可以做到的,這只是一個問題。我還應該添加最終目標將是Excel。我已經使用包含項目符號和換行符的數據測試了使用SSIS導出到Excel,並且此部分工作正常。 –