powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод таблицы в переменную -строку.
9 сообщений из 9, страница 1 из 1
Вывод таблицы в переменную -строку.
    #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
Вывод таблицы в переменную -строку.
    #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
Вывод таблицы в переменную -строку.
    #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
Вывод таблицы в переменную -строку.
    #40082807
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

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

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

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

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


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



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


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