Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Блочный вывод данных запросом / 13 сообщений из 13, страница 1 из 1
16.03.2020, 17:49
    #39937940
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
Доброго времени суток
Прошу подкинуть идею по реализации нестандартного "блочного" вывода данных запросом
Есть таблица с несколькими полями, к примеру
Код: sql
1.
2.
3.
create table #TestData (Field1    varchar(20),
                        Field2    varchar(20),
                        FieldDate smalldatetime)           


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

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

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

буду рад вашим мыслям, спасибо
...
Рейтинг: 0 / 0
16.03.2020, 17:50
    #39937943
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
почему то вложение не прикрепилось с первого раза
...
Рейтинг: 0 / 0
16.03.2020, 18:08
    #39937952
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР,

возьмите Reporting services, нарисуйте отчет, экспортируйте в xls, pdf, html еще куда-то.
...
Рейтинг: 0 / 0
16.03.2020, 18:09
    #39937953
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
Если средствами MS Office, то изучайте VBA.
...
Рейтинг: 0 / 0
16.03.2020, 18:21
    #39937960
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
Владислав Колосов
Если средствами MS Office, то изучайте VBA.
через макрос или Reporting services давно бы сделал без вопросов, но имеет место быть ограниченность в инструментах разработки. Как выше упоминал, реализовываю отчеты через BCP, код пишется на коленке
...
Рейтинг: 0 / 0
16.03.2020, 18:27
    #39937965
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР
пример итогового вывода закрепил во вложении, накидал для наглядности в Excel
Это пример эксельной таблички, а в примере итогового вывода нужно показать поля выводимого датасета. (Поля, разумеется, не меняются от записи к записи)

Ничего сложного в таком запросе нет, но нужно определить, что всё таки хочется получить.
...
Рейтинг: 0 / 0
16.03.2020, 18:41
    #39937975
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
alexeyvg
шК0ДЕР
пример итогового вывода закрепил во вложении, накидал для наглядности в Excel
Это пример эксельной таблички, а в примере итогового вывода нужно показать поля выводимого датасета. (Поля, разумеется, не меняются от записи к записи)

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


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

Пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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 тк быстрее и нагляднее)
...
Рейтинг: 0 / 0
16.03.2020, 18:43
    #39937976
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР,

Результат должен быть картинкой, что ли?
...
Рейтинг: 0 / 0
16.03.2020, 20:06
    #39938004
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР,

Код: 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.
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;
...
Рейтинг: 0 / 0
16.03.2020, 22:20
    #39938029
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР
результат должен быть таким (делаю через Excel тк быстрее и нагляднее)
Вам же надо сделать запрос, который что то вернёт?
Тогда покажите результат запроса, а не Эксель.

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

Так что вам нужно думать не над запросом, а над постановкой задачи.
...
Рейтинг: 0 / 0
17.03.2020, 11:04
    #39938140
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
invm,
спасибо за шедевр
...
Рейтинг: 0 / 0
17.03.2020, 11:16
    #39938148
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
шК0ДЕР
invm,
спасибо за шедевр
У него же поля не меняются, везде 2 поля :-)
...
Рейтинг: 0 / 0
17.03.2020, 14:25
    #39938272
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блочный вывод данных запросом
alexeyvg,

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


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