2015-09-07 2 views
-1

У меня есть проблема, которая кажется возможной для решения, но сейчас у меня нет правильной идеи.TSQL Объединить значения из нескольких столбцов в строку в одном столбце

У меня есть таблица с несколькими столбцами с датами в именах столбцов. Эти имена будут меняться, поэтому мне, вероятно, нужен динамический код. Вот как таблица выглядит следующим образом:

ID 2014-01-01 2014-01-02 2014-01-03 2014-01-04 2014-01-05 2014-01-06 (...) 2014-12-31 
1 1    0   1   0   0   0    1 
2 1    1   1   1   1   1    1          
3 1    1   0   1   1   1    0 
4 1    0   0   1   1   1    1 
5 1    1   0   0   0   1    1 
(...) 

Таким образом, существует последовательность дат с логическими значениями 0 или 1. Что мне нужно, чтобы добавить еще один столбец этого набора с последовательностью этих значений в виде строки, как, например (для ID = 1):

101000 (...) 1

Как я уже упоминал, даты могут измениться.

Не могли бы вы помочь мне в этом случае?

+0

Для резюмировать - вам нужны коды, который сцепляет строки данных в единый Colum (для различного количества колонок и с разными названиями)? –

+1

Это немного пахнет проблемой XY. Если вы не возражаете, что вы собираетесь делать с этой строкой, как только вы ее получите? –

+1

Это фактическая структура таблицы или результат 'PIVOT'? – lad2025

ответ

1

Я думаю, вы будете нуждаться в динамическом SQL для этого:

DECLARE @sql NVARCHAR(MAX) 
    DECLARE @tablename NVARCHAR(128) = 'FUNKTIONEN' 

    SET @sql = (
    SELECT 'CONVERT(NVARCHAR(max),ISNULL('+ name + ','''')) + ' 
    FROM sys.all_columns 
    WHERE object_id = (
     SELECT object_id 
     FROM sys.all_objects 
     WHERE object_id = object_id(@tablename) 
     ) FOR  XML PATH ('')) 

    SET @sql = 'SELECT TOP 1 ' + LEFT(@sql,LEN(@sql)-1) + 'FROM ' + @tablename 

    EXECUTE sp_executesql @sql