Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Добрый день! Задача состоит в составлении отчета.
есть список дел, по оторым проводятся разные действия (5 вариантов) в разное время(период 1 месяц).
Отчет должен содержать № дела, и в строчке все возможные операции с ним за весь период.
там где действия не было - пустота, где было - комментарий.

есть примерное решение, но работает не правильно - создает дубликаты дел в зависимости от дат, действия за 1 дату в 1 строке , 2- во 2 и т. д.
18 ноя 15, 15:42    [18436261]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
У вас ошибка в 17й строке.
18 ноя 15, 15:52    [18436354]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Гавриленко Сергей Алексеевич, ну да.
то что у меня есть я видел уже, а тут хочу услышать возможны варианты решения, которых я не нашел
18 ноя 15, 15:55    [18436380]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
qwez
Гавриленко Сергей Алексеевич, ну да.
то что у меня есть я видел уже, а тут хочу услышать возможны варианты решения, которых я не нашел

https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume , пункты 4 и 6.
18 ноя 15, 15:58    [18436409]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Гавриленко Сергей Алексеевич,
sql server 2008
необходимо создать табл типа:
|# дела| дата1 | дата1 | и т д
| действие1 | действие 2 |действие 3 | действие1 | действие 2 |действие 3 | и тд
111 пусто пусто купил продал не купил
....



как то так
18 ноя 15, 16:24    [18436581]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Гавриленко Сергей Алексеевич,
sql server 2008
необходимо создать табл типа:
|# дела| дата1 . . . ...................................| дата1............................................| и т д
..........| действие1 | действие 2 |действие 3 | действие1 | действие 2 |действие 3 | и тд
111......| пусто ......|пусто..........|................| купил......| продал.......|..не купил....|


столбики немного кривые, но так лучше)
18 ноя 15, 16:27    [18436604]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
zero_air
Member

Откуда:
Сообщений: 53
qwez,

Опять мимо.
Тут ни кто не знает с чем вы работаете.
Исходные данные то какие ?
18 ноя 15, 16:42    [18436698]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
zero_air, упрощенно получается так:
есть таблица в бд, которая хранит дату контакта, и произведенное действие.
во-второй табл. лежит информация про клиента, связана с первой по ид клиента.
нужно построить таблицу которая будет отображать данные по 2 критериям- дата и действие относящееся к каждому делу без исключения в одной строке табл результата.

Так может понятней будет?
18 ноя 15, 16:54    [18436780]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
qwez
zero_air, упрощенно получается так:
есть таблица в бд, которая хранит дату контакта, и произведенное действие.
во-второй табл. лежит информация про клиента, связана с первой по ид клиента.
нужно построить таблицу которая будет отображать данные по 2 критериям- дата и действие относящееся к каждому делу без исключения в одной строке табл результата.

Так может понятней будет?

https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume
- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;
18 ноя 15, 16:55    [18436785]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Гавриленко Сергей Алексеевич, а просто направление поиска решения сказать нельзя???
Скажите для начала есть ли варианты построения подобных таблиц,в результате запроса, методами sql server.

К сообщению приложен файл (Книга1.xlsx - 8Kb) cкачать
18 ноя 15, 17:06    [18436862]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Модератор: Уважаемый Олег. Последнее китайское. Или вы оформляете вопрос как надо, или тема закрывается.


Сообщение было отредактировано: 18 ноя 15, 17:11
18 ноя 15, 17:10    [18436892]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
qwez
а просто направление поиска решения сказать нельзя???

А просто выполнить Рекомендации нельзя ? Нужно обязательно чтобы все по вашим правилам было ?
18 ноя 15, 17:13    [18436918]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Гавриленко Сергей Алексеевич,

CREATE TABLE [dbo].[contact] (
	[contact_id] [int] [PRIMARY],
        [date] [date] NOT NULL ,
	[client_id] [int] NOT NULL,
        [contact_text] [char] NOT NULL,
) 
GO
CREATE TABLE [dbo].[client] (
	[client_id] [int] NOT NULL [PRIMARY],
	[cl_name] [int] NOT NULL 
) 
GO

INSERT INTO [contact] (contact_id,date,client_id,contact_text) VALUES (1,'2015.11.11',2,'заказ принят')
INSERT INTO [contact] (contact_id,date,client_id,contact_text) VALUES (2,'2015.11.12',2,'смс отправил')
INSERT INTO [contact] (contact_id,date,client_id,contact_text) VALUES (3,'2015.11.12',2,'заказ доставлен')
INSERT INTO [contact] (contact_id,date,client_id,contact_text) VALUES (4,'2015.11.08',1,'заказ принят')

INSERT INTO client (client_id,сl_name) VALUES (1,1111111111111111111)
INSERT INTO client (client_id,сl_name) VALUES (2,2222222222222222222)


вот скрипт, в результате в зависимости от значения contact.contact_text нужно выводить отдельные фразы по примеру when contact.contact_text=заказ принят then кл оформил заявку...
но проблема в том как сгрупировать данные по двум критериям, и в то же время разместить результат в 1 строке

Сообщение было отредактировано: 18 ноя 15, 17:32
18 ноя 15, 17:30    [18437037]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
qwez
но проблема в том как сгрупировать данные по двум критериям, и в то же время разместить результат в 1 строке

так вот "подобные таблицы" называются перекрестными запросами/crosstab query или еще "шахматка"
На данном сайте и в интернете полно вариантов их реализации.
Лучше всего они получаются средствами клиентского приложения, а не сервера
18 ноя 15, 17:38    [18437099]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Glory,
Большое спасибо!
18 ноя 15, 17:42    [18437120]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
qwez
столбики немного кривые, но так лучше)
При написании сообщения можно применить тэг "таблица"
qwez
но проблема в том как сгрупировать данные по двум критериям, и в то же время разместить результат в 1 строке
Первая проблема в том, какой результат вы хотите получить.

В ваших примерах таблицы показано одно событие в день для одного клиента.
А в ваших примерах данных показано два события в один день для одного клиента ('2015.11.12',2)

Вы, в дополнение к примеру данных, покажите там же рекордсет, который должен получиться из этих данных.
Или в виде таблицы в сообщении, или просто в виде SELECT с константами.
18 ноя 15, 17:44    [18437131]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
Glory
так вот "подобные таблицы" называются перекрестными запросами/crosstab query или еще "шахматка"
Не, у него сложнее, не перекрёстный запрос, а прямо таки "горизонтальный рекордсет" :-)
18 ноя 15, 17:45    [18437138]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
alexeyvg,

ДА, почитал про перекрестные и оказалось что я их уже успешно практикую) но жаль этого мало.
вот так больше похоже

К сообщению приложен файл (Книга1.xlsx - 8Kb) cкачать
18 ноя 15, 17:57    [18437202]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
qwez
alexeyvg,

ДА, почитал про перекрестные и оказалось что я их уже успешно практикую) но жаль этого мало.
вот так больше похоже
Приложенный файл (Книга1.xlsx - 8Kb)
Понятнее не стало.
18437131
18 ноя 15, 18:01    [18437225]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
cl_name....|2015.11.08..................................|2015.11.11...........................................|2015.11.08..............................................|
_________|входящий...|исходящий....|....смс...|входящий...|исходящий....|....смс...........|входящий...|всходящий....|....смс..............|
111111111|заказ принят|..................|............|................|...................|...................|.................|...................|.......................|
222222222|.................|...................|..........|заказ принят|...................|....................|................|заказ доставлен|смс отправлено|

вот какую таблицу нужно получить из скрипта написаного выше
18 ноя 15, 18:17    [18437318]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
qwez
cl_name....|2015.11.08..................................|2015.11.11...........................................|2015.11.08..............................................|
_________|входящий...|исходящий....|....смс...|входящий...|исходящий....|....смс...........|входящий...|всходящий....|....смс..............|
111111111|заказ принят|..................|............|................|...................|...................|.................|...................|.......................|
222222222|.................|...................|..........|заказ принят|...................|....................|................|заказ доставлен|смс отправлено|

вот какую таблицу нужно получить из скрипта написаного выше


Посмотрите как выглядит любой датасет, где вы там увидели многоуровневую шапку?
18 ноя 15, 18:44    [18437475]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
alexeyvg
Glory
так вот "подобные таблицы" называются перекрестными запросами/crosstab query или еще "шахматка"
Не, у него сложнее, не перекрёстный запрос, а прямо таки "горизонтальный рекордсет" :-)

Столбцы - даты
Строки - имена
На перекерстье - сумма символьного поля
18 ноя 15, 18:45    [18437482]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
Glory,

автор
alexeyvg
Glory
так вот "подобные таблицы" называются перекрестными запросами/crosstab query или еще "шахматка"
Не, у него сложнее, не перекрёстный запрос, а прямо таки "горизонтальный рекордсет" :-)

Столбцы - даты
Строки - имена
На перекерстье - сумма символьного поля

почти, так сказать каждый столбец даты должен содержать "подстолбци" с действиями
18 ноя 15, 18:52    [18437505]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
qwez
Member

Откуда: Україна
Сообщений: 20
WarAnt,
автор
Посмотрите как выглядит любой датасет,


извините, можно поконкретней, или же ссылочку на литературу по датасэту и его применении в sql
18 ноя 15, 18:54    [18437513]     Ответить | Цитировать Сообщить модератору
 Re: сложный вывод результатов в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
qwez
почти, так сказать каждый столбец даты должен содержать "подстолбци" с действиями

Отображать сумму символьных полей можно с любым разделителем
18 ноя 15, 19:02    [18437543]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить