Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
Доброго времени суток
Прошу подкинуть идею по реализации нестандартного "блочного" вывода данных запросом
Есть таблица с несколькими полями, к примеру
create table #TestData (Field1    varchar(20),
                        Field2    varchar(20),
                        FieldDate smalldatetime)           

Смысл следующий:
Делается выборка всех данных из таблицы #TestData с группировкой по дате (FieldDate)
Для каждого нового дня выводится сначала отдельная строка с текстовкой и датой (FieldDate), затем следующей строкой шапка таблицы (всегда одинаковая), затем следующими строками сами данные (Field1, Field2, столько, сколько их будет за дату FieldDate)

пример итогового вывода закрепил во вложении, накидал для наглядности в Excel
чую, что через cte надо реализовать, только не соображу как

зы
такая сложность делается для того, чтобы сформировать xls документ через bcp
начитываю необходимые данные, обрамляю xml кодом и скармливаею bcp
ранее со столь сложным шаблоном иметь дел не приходилось, были лишь стандартные - с шапкой на верху и выводом данных под ней, а теперь блочный вывод понадобилось сотворить
версия бд 2008

буду рад вашим мыслям, спасибо
16 мар 20, 17:49    [22100086]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
почему то вложение не прикрепилось с первого раза

К сообщению приложен файл. Размер - 19Kb
16 мар 20, 17:50    [22100089]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
шК0ДЕР,

возьмите Reporting services, нарисуйте отчет, экспортируйте в xls, pdf, html еще куда-то.
16 мар 20, 18:08    [22100104]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Если средствами MS Office, то изучайте VBA.
16 мар 20, 18:09    [22100107]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
Владислав Колосов
Если средствами MS Office, то изучайте VBA.
через макрос или Reporting services давно бы сделал без вопросов, но имеет место быть ограниченность в инструментах разработки. Как выше упоминал, реализовываю отчеты через BCP, код пишется на коленке
16 мар 20, 18:21    [22100119]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30751
шК0ДЕР
пример итогового вывода закрепил во вложении, накидал для наглядности в Excel
Это пример эксельной таблички, а в примере итогового вывода нужно показать поля выводимого датасета. (Поля, разумеется, не меняются от записи к записи)

Ничего сложного в таком запросе нет, но нужно определить, что всё таки хочется получить.
16 мар 20, 18:27    [22100127]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
alexeyvg
шК0ДЕР
пример итогового вывода закрепил во вложении, накидал для наглядности в Excel
Это пример эксельной таблички, а в примере итогового вывода нужно показать поля выводимого датасета. (Поля, разумеется, не меняются от записи к записи)

Ничего сложного в таком запросе нет, но нужно определить, что всё таки хочется получить.


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

Пример
insert into #TestData (Field1,
                       Field2,
                       FieldDate)
select 'Хлеб', 'Молоко', '20200314'
union all
select 'Батон', 'Квас', '20200315'
union all
select 'Рыба', 'Пиво', '20200315'
union all
select 'Малина', 'Компот', '20200315'
union all
select 'Пирог', 'Чай', '20200316'
union all
select 'Картофель', 'Кисель', '20200316'

результат должен быть таким (делаю через Excel тк быстрее и нагляднее)

К сообщению приложен файл. Размер - 13Kb
16 мар 20, 18:41    [22100143]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36691
шК0ДЕР,

Результат должен быть картинкой, что ли?
16 мар 20, 18:43    [22100144]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
invm
Member

Откуда: Москва
Сообщений: 9116
шК0ДЕР,

declare @t table (Field1 varchar(10),
                       Field2 varchar(10),
                       FieldDate date);

insert into @t
select 'Хлеб', 'Молоко', '20200314'
union all
select 'Батон', 'Квас', '20200315'
union all
select 'Рыба', 'Пиво', '20200315'
union all
select 'Малина', 'Компот', '20200315'
union all
select 'Пирог', 'Чай', '20200316'
union all
select 'Картофель', 'Кисель', '20200316';

with a as
(
 select distinct FieldDate from @t
),
b as
(
 select
  h.ord, h.f1, h.f2, a.FieldDate
 from
  a cross apply
  (values
   (1, cast('Вывод данных за дату ' + convert(varchar(10), a.FieldDate, 104) as sql_variant), cast(null as sql_variant)),
   (2, 'Заголовок1', 'Заголовок2')
 ) h(ord, f1, f2)
),
c as
(
select
 ord, f1, f2, FieldDate
from
 b

union all

select
 3, Field1, Field2, FieldDate
from
 @t
)
select f1, f2 from c order by FieldDate, ord;
16 мар 20, 20:06    [22100186]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30751
шК0ДЕР
результат должен быть таким (делаю через Excel тк быстрее и нагляднее)
Вам же надо сделать запрос, который что то вернёт?
Тогда покажите результат запроса, а не Эксель.

шК0ДЕР
Алексей, поля как раз меняются. в каждом блоке они свои
Запрос возвращает таблицу, в которой поля заданы, и не меняются.

Так что вам нужно думать не над запросом, а над постановкой задачи.
16 мар 20, 22:20    [22100223]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
invm,
спасибо за шедевр
17 мар 20, 11:04    [22100442]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30751
шК0ДЕР
invm,
спасибо за шедевр
У него же поля не меняются, везде 2 поля :-)
17 мар 20, 11:16    [22100453]     Ответить | Цитировать Сообщить модератору
 Re: Блочный вывод данных запросом  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
alexeyvg,

мне нужна была идея, реализовал ее под свои нужны
17 мар 20, 14:25    [22100658]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить