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

Откуда:
Сообщений: 6
Торговая точка/товарКоличество (шт.)Сумма (сум)Дата заказа
SAL0087.1670160009834660019.07.2018
1325300225510019.07.2018
151210058460019.07.2018
201210062640019.07.2018
221230001127400019.07.2018
222581006088770019.07.2018
27122000668200019.07.2018
272524001603680019.07.2018


есть такая таблица.
первая строка это заказ, а все последующие это ид товара который входил в этот заказ. Как вывести это через union select?
Модератор: Поработал визуализатором


Сообщение было отредактировано: 18 апр 19, 12:50
18 апр 19, 12:16    [21865940]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 53705
m1ke423,

мало данных
существующий пример плохо визуализирован
нет корректного тестового примера
18 апр 19, 12:30    [21865960]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
m1ke423,

Может основы архитектуры БД посмотреть?

https://ru.wikipedia.org/wiki/Третья_нормальная_форма
18 апр 19, 12:58    [21865993]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
m1ke423,

А если работать с данными в таком виде, то придется через хитрозакрученную Ж изгаляться с помощью оконных функций, вроде FIRST_VALUE() OVER .
18 апр 19, 13:00    [21865995]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
m1ke423
Торговая точка/товарКоличество (шт.)Сумма (сум)Дата заказа
SAL0087.1670160009834660019.07.2018
1325300225510019.07.2018
151210058460019.07.2018
201210062640019.07.2018
221230001127400019.07.2018
222581006088770019.07.2018
27122000668200019.07.2018
272524001603680019.07.2018


есть такая таблица.
первая строка это заказ, а все последующие это ид товара который входил в этот заказ. Как вывести это через union select?
Модератор: Поработал визуализатором

нормализация -1 порядка?
18 апр 19, 13:02    [21865997]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
TaPaK,

Это не нормализация никакого порядка. Даже в ХД в таком виде не держат данные.
18 апр 19, 13:06    [21866010]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
m1ke423
Member

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

Копировал с экселя, криво вставилось.
Нужно вывести топ 3 заказа за каждый месяц в 2018 году.
Первая строка Это Номер заказа, Торговая точка, кол-во продукции, сумма и так далее
А во второй строке через union select нужно объединить из двух таблиц в один столбец.

То есть
"Торговая Точка"/"Код Товара"
'Магазин'
'3123'

хотя лучше так: http://prntscr.com/ndm4v4
18 апр 19, 13:06    [21866011]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Я так понял нужно получить такую таблицу с помощью Union all:
Select [Торговая точка/товар],
          [Количество],
          [Дата] 
From (
  Select [НомерЗаказа] as  [Торговая точка/товар],
            [Количество],
            [Дата],
            1 as [Уровень],
            [Номер/ИД Заказа] as [Заказ]
     From [Заказы]
  union all
  Select [ИД] as  [Торговая точка/товар],
            [Количество],
            [Дата],
            2 as [Уровень],
            [Номер/ИД Заказа] as [Заказ]
     From [СтрокиЗаказа]
) x
Order by [Заказ], [Уровень]
18 апр 19, 13:08    [21866016]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
Kopelly,

Вы за автора сделали нормальзацию, в частности попытались ввести ключи.
18 апр 19, 13:12    [21866028]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
a_voronin
Kopelly,

Вы за автора сделали нормальзацию, в частности попытались ввести ключи.


Автор спрашивал, как вывести(да, коряво спрашивал)
а вы за автора додумали про нормализацию и хранение.
18 апр 19, 13:12    [21866031]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
982183
Member

Откуда: VL
Сообщений: 3350
Даже при такой левой схеме, должен быть признак, отличающий строку идентифицирующую заказ от строк с товарами этого(этих) заказов.
18 апр 19, 13:24    [21866056]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
982183
Даже при такой левой схеме, должен быть признак, отличающий строку идентифицирующую заказ от строк с товарами этого(этих) заказов.

есть буквы/нет букв
18 апр 19, 13:25    [21866058]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
982183
Member

Откуда: VL
Сообщений: 3350
m1ke423
хотя лучше так: http://prntscr.com/ndm4v4

Это исходные данные, или результат, который надо получить?
В любом случае - нужна вторая часть задачи.
18 апр 19, 13:26    [21866062]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
982183
Member

Откуда: VL
Сообщений: 3350
TaPaK
982183
Даже при такой левой схеме, должен быть признак, отличающий строку идентифицирующую заказ от строк с товарами этого(этих) заказов.
есть буквы/нет букв

Логично.
Но интуиция вещь не всегда точная.
18 апр 19, 13:27    [21866063]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
982183
Member

Откуда: VL
Сообщений: 3350
+ там ID есть.
18 апр 19, 13:28    [21866066]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
m1ke423
Member

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

Это результат который надо получить
18 апр 19, 13:30    [21866071]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
m1ke423
982183,

Это результат который надо получить


вам же уже написали пример, как можно получить такой результат.
или надо угадать вашу структуру данных и написать вам готовый запрос?
18 апр 19, 13:31    [21866074]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
982183
Member

Откуда: VL
Сообщений: 3350
Тогда Kopelly дал совершенно правильное направление.

Осталось только понять, что для получения результата надо видеть и первичные данные или просто их структуру.
18 апр 19, 13:31    [21866075]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Alibek B.
Member

Откуда:
Сообщений: 3525
m1ke423
все последующие

Последующие — это какие?
18 апр 19, 15:01    [21866253]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
m1ke423
Member

Откуда:
Сообщений: 6
Alibek B.,

http://prntscr.com/ndm4v4
Обратите внимание на данный скриншот. Это результат который должен получиться
18 апр 19, 15:13    [21866271]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36692
m1ke423
Alibek B.,

http://prntscr.com/ndm4v4
Обратите внимание на данный скриншот. Это результат который должен получиться
Из чего он должен получиться? Из воздуха?

Будьде добры выполнить рекомендации из п.4 и п.6

Сообщение было отредактировано: 18 апр 19, 15:19
18 апр 19, 15:18    [21866283]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Гавриленко Сергей Алексеевич
m1ke423
Alibek B.,

http://prntscr.com/ndm4v4
Обратите внимание на данный скриншот. Это результат который должен получиться
Из чего он должен получиться? Из воздуха?

Будьде добры выполнить рекомендации из п.4 и п.6

вы что не художник? нарисуйте!
18 апр 19, 15:19    [21866287]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
Nika gnome
Member

Откуда:
Сообщений: 566
m1ke423,
А теперь добавь ещё одну такую группу "строки и подстроки", перемешай все строки и ещё разок объясни, где там группа, а где все члены этой группы.

Ты введи ещё один столбец с кодом группы. И сделай так, чтобы у всех строк одной группы был общий одинаковый код.
Можешь немного ещё улучшить - выдели после этого первую строку в отдельную таблицу.
Вот теперь у тебя получится нормализованная человеческая таблица, с которой можно будет работать.

А то, что ты тут нарисовал - это ты пытался пользоваться SQL Server'ом так, как ты всегда пользовался Excel'ем.
18 апр 19, 15:46    [21866310]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
iiyama
Member

Откуда:
Сообщений: 642
Человеку, скорее всего просто нужен отчет
и слать его нужно не в проектирование, а в репортинг
Описанием своего UNION он пытался, понятными для этого раздела словами, объяснить, что первой строкой ему нужна сумма по группе заказа

PS. Все выше написанное исключительно ИМХО
18 апр 19, 18:35    [21866488]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить такое?  [new]
m1ke423
Member

Откуда:
Сообщений: 6
Давайте попробую объяснить более понятно
Я стажёр в IT отделе одной из фирм. Опыт с t-sql всего неделя.
Дали задание:

Необходимо составить топ 3 отчёта по сумме продаж за каждый месяц, за 2018 год. И есть пример как это должно выглядеть в ssms
http://prntscr.com/ndm4v4

То есть первая строка выдаёт сам заказ (SAL0087.1670), название торговой точки(Азизбек.... МЧЖ), единица измерения (блоки) с общим количеством товара (2060) и суммой (98 миллионов)
А ниже собственно (1325) ид товара, (Sarbast Original) имя товара у которого ид(1325), кол-во штук даного товара и собственно общая сумма. Сумму можно найти умножением Кол-ва на цену 1 товара

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