TSQL: значения всех полей подряд в одну строку - PullRequest
3 голосов
/ 22 августа 2011

Мне нужно поместить все, а не NULL, значения одной строки в одну строку, как

таблица:

CustomerName  Address Zip
Alex          Moscow  1234

результат:

CustomerName: Alex
Address: Moscow
Zip: 1234

Важное замечание - я не знаю имен / типов полей, поэтому он должен пройти через все поля и все ненулевые значения добавить в список.

Похоже, что он может сделать это с помощью xquery, но не может найти правильный синтаксис. Есть намеки?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 22 августа 2011
select T2.N.value('local-name(.)', 'nvarchar(128)')+': '+
       T2.N.value('.', 'nvarchar(max)')
from (select *
      from YourTable
      for xml path(''), type) as T1(X)
  cross apply T1.X.nodes('/*') as T2(N)
1 голос
/ 22 августа 2011

Не так элегантно, как решение Микаэля. но я все еще хочу включить его.

DECLARE @yourtable nvarchar(128)
DECLARE @sql as nvarchar(2100)
DECLARE @col as nvarchar(2000)

SET @yourtable = '<tablename>'

SELECT @col = coalesce(@col, '' ) + '+'''+t2.column_name+': '' + cast([' + t2.column_name + '] as varchar) + char(32)'
FROM INFORMATION_SCHEMA.TABLES t1 join 
INFORMATION_SCHEMA.COLUMNS t2 on t1.table_name = t2.table_name
where t2.is_nullable = 'NO' and t1.table_name = @yourtable
and t1.table_type = 'BASE TABLE' and t1.table_schema = t2.table_schema
and t2.table_schema = 'dbo'
SET  @sql = 'select ' + stuff(@col, 1,1,'') +' from ' + @yourtable
EXEC (@sql)
1 голос
/ 22 августа 2011
select 'CustomerName: ' + isNull(CustometName, '') + 'Address: ' 
+ isNull(Address, ''), + 'Zip:' + isNull(Zip, '') from [TableName]

И, возможно, вам нужно привести некоторые значения к varchar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...