Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод таблицы в переменную -строку. / 9 сообщений из 9, страница 1 из 1
08.07.2021, 20:22
    #40082776
Yennifer123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Доброе время суток!

Есть таблица #tab:

Поле 1 Поле 2 Поле 3 ... Поле N

Значение 1.1 Значение 1.2 Значение 1.3 ... Значение 1.N
Значение 2.1 Значение 2.2 ...


В таблице примерно 1000 - 2000 строк.
Задача вывести таблицу в строку и присвоить переменной. При этом, нужно, чтобы в конце каждой строки таблицы был переход на следующую строку в тексте переменной.

Попробовала вариант:

DECLARE @data varchar(max);
SET @data = (SELECT 'Поле1 = '+[Поле 1]+'; Поле2 = '+[Поле 2]+'; ПолеN = '+[ПолеN]+';'+(#код_символа_перехода_на_след_строку ??)
FROM [#tab]
FOR XML PATH(''));

Данные все не поместились, строка обрезается...((

зы: просьба не кидать в меня тапками! )
...
Рейтинг: 0 / 0
08.07.2021, 20:44
    #40082780
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Как-то так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
  declare @CrLf as char(1) = char(10);

  with f as ( select * from @f )
    insert ETL.dbo.AlfaInsurance(name, creation_time, file_stream) 
      select fileName, @now
           , Data = cast( cast( (select [str] + @CrLf 
                                  from (  select str = N'"№";"Номер полиса";"Страховая программа";"Колво застрахованных";"Страхователь";"ФИО застрахованных";"Страна";"Дата оформления";"Дата начала действия полиса";"Дата окончания действия полиса";"Название риска";"Страховая сумма";"Валюта";"Страховая премия в валюте";"Страховая премия в Руб";"Путевка MoreTravel";"доп. условия";"Франшиза невыезда"'
                                          union all   
                                          select str = 
                                              N' ' + cast([№] as nvarchar) + N';'
                                            + N'"' + [Номер полиса] + N'";'
                                            + N'"' + [Страховая программа] + N'";'
                                            + N''  + cast( [Колво застрахованных] as nvarchar) + N';'
                                            + N'"' + [Страхователь] + N'";'
                                            + N'"' + [ФИО застрахованных] + N'";'
                                            + N'"' + [Страна] + N'";'
                                            + N''  + convert( nvarchar(10), [Дата оформления], 121 ) + N';'
                                            + N''  + convert( nvarchar(10), [Дата начала действия полиса], 121 ) + N';'
                                            + N''  + convert( nvarchar(10), [Дата окончания действия полиса], 121 ) + N';'
                                            + N'"' + [Название риска] + N'";'
                                            + N''  + replace( cast([Страховая сумма] as nvarchar(64)), '.', ',' ) + N';'
                                            + N'"' + [Валюта] + N'";'
                                            + N''  + replace( cast([Страховая премия в валюте] as nvarchar(64)), '.', ',' ) + N';'
                                            + N''  + replace( cast([Страховая премия в Руб] as nvarchar(64)), '.', ',' ) + N';'
                                            + N'"' + [Путевка MoreTravel] collate Cyrillic_General_CI_AS + N'";'
                                            + N'"' + isnull([доп. условия], '') + N'";'
                                            + N'"' + [Франшиза невыезда] + N'"'
                                            from (    select top(100000000)
                                                             [№] = row_number() over(partition by ROJF order by IP_CreateDate, IP_PolicyNumber) 
                                                           , [Номер полиса] = IP_PolicyNumber
                                                           , [Страховая программа] = IP_COMMENT
                                                           , [Колво застрахованных] = IP_NMen
                                                           , [Страхователь] = IP_Fio
                                                           , [ФИО застрахованных] = AllNames
                                                           , [Страна] = IP_JurName + iif(A2_NAME like 'Schengen countries (%)', ', SCHENGEN', '') 
                                                           , [Дата оформления] = IP_CreateDate
                                                           , [Дата начала действия полиса] = IP_DateBeg
                                                           , [Дата окончания действия полиса] = IP_DateEnd 
                                                           , [Количество дней] = DL_Long 
                                                           , [Название риска] = case IPL_ICSID when 1 then 'Медицинские и иные расходы' when 3 then 'Отказ от поездки' else '???' end 
                                                           , [Страховая сумма] = round(IPL_Summa, 2) 
                                                           , [Валюта] = RA_ISOCode
                                                           , [Страховая премия в валюте] = IPL_PremiumFull
                                                           , [Страховая премия в Руб] = round(IPL_PremiumFull * IP_RateOfExchange, 2) 
                                                           , [Путевка] = DL_DGCod 
	                                                       , [доп. условия] = case when A2_NAME = 'SPORT' and isnull( ltrim(rtrim(IP_JurFullName)), '' ) <> 'SPORT' 
                                                                                        or A2_NAME <> 'SPORT' and isnull( ltrim(rtrim(IP_JurFullName)), '' ) = 'SPORT' 
                                                                                     then N'Ошибка: в страховке СПОРТ'

                                                                                   else case isnull( ltrim(rtrim(IP_JurFullName)), '' ) 
	                                                                                      when 'SPORT' then N'СПОРТ'
		                                                                                  when '' then N'' 
                                                                                          else N'!!!Ошибка: ' + isnull( IP_JurFullName, '(null)' ) 
                                                                                        end 
                                                                              end
                                                           , [Франшиза невыезда] = ROJF
                                                        from  ReportForMaster.fAlfaInsurance_v5(f.First, f.Last, f.Refuse, f.Who) as t
                                                        where ( @PolicyNumber is null or [IP_PolicyNumber] like @PolicyNumber + N'%' )
                                                        order by ROJF, [№], [Номер полиса]
                                        ) as t
                                    )
                                    as strs 
                                  for xml path('')) 
                            as varchar(max) ) 
                     as varbinary(max) )
      from f;
...
Рейтинг: 0 / 0
08.07.2021, 21:22
    #40082785
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @t table (f1 varchar(10), f2 varchar(10), f3 varchar(10));
insert into @t
values
 ('a', 'b', 'c'),
 ('d', 'e', 'f');

declare @s varchar(max);

select
 @s = string_agg(r.x.query('for $i in /row/* return concat($i/text()[1], ";")').value('.', 'varchar(max)'), char(10))
from
 @t t cross apply
 (select t.* for xml path('row'), type) r(x);

print @s;
...
Рейтинг: 0 / 0
08.07.2021, 22:45
    #40082807
Yennifer123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
invm,

попробовала ваш метод.
Все равно половина таблицы не влезло( Обрезало посередине. В таблице 8 колонок и 1100 строк.
Каждая колонка - varchar(35)
...
Рейтинг: 0 / 0
09.07.2021, 00:56
    #40082819
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Yennifer123,

обрезается где, на экране или в переменной?
...
Рейтинг: 0 / 0
09.07.2021, 09:58
    #40082879
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Yennifer123,

SSMS имеет ограничение на размер выводимых строк.
Попробуйте просмотреть результат вот так:
Код: sql
1.
select cast('' as xml).query('sql:variable("@s")');
...
Рейтинг: 0 / 0
09.07.2021, 11:46
    #40082936
Yennifer123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Владислав Колосов, в переменной!
...
Рейтинг: 0 / 0
09.07.2021, 11:47
    #40082938
Yennifer123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
invm,

спасибо большое, теперь получилось! :)
...
Рейтинг: 0 / 0
09.07.2021, 12:31
    #40082961
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод таблицы в переменную -строку.
Yennifer123


Данные все не поместились, строка обрезается...((



Может пора в сторону OLAP кубов посмотреть.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод таблицы в переменную -строку. / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]