powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Комрады, кому не лень, подскажите с запросом пожалуйста.
8 сообщений из 8, страница 1 из 1
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124585
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток.

set nocount on
go

drop table #temp
go

create table #temp(
association_id int not null,
vendor_id int not null,
vendor_name varchar(50) not null,
vendor_amount money not null,
seq_no int identity)

ALTER TABLE #temp ADD CONSTRAINT pk_tmp PRIMARY KEY CLUSTERED (association_id, vendor_id)

insert into #temp values( 1, 10, 'John', 20.00)
insert into #temp values( 1, 11, 'Bill', 21.01)
insert into #temp values( 1, 12, 'Oliver', 22.02)
insert into #temp values( 1, 13, 'Elijah', 23.03)

insert into #temp values( 2, 10, 'John', 24.04)
insert into #temp values( 2, 14, 'William', 25.05)
insert into #temp values( 2, 15, 'James', 26.06)

insert into #temp values( 3, 10, 'John', 27.07)
insert into #temp values( 3, 14, 'William', 28.08)
insert into #temp values( 3, 15, 'James', 29.09)
insert into #temp values( 3, 16, 'Lucas', 30.00)
insert into #temp values( 3, 17, 'Henry', 31.01)


select association_id, vendor_id, vendor_name, vendor_amount from #temp order by seq_no
select @@ROWCOUNT

имеем:
"association_id" "vendor_id" "vendor_name" "vendor_amount"
1, 10, 'John', 20.00
1, 11, 'Bill', 21.01
1, 12, 'Oliver', 22.02
1, 13, 'Elijah', 23.03
2, 10, 'John', 24.04
2, 14, 'William', 25.05
2, 15, 'James', 26.06
3, 10, 'John', 27.07
3, 14, 'William', 28.08
3, 15, 'James', 29.09
3, 16, 'Lucas', 30.00
3, 17, 'Henry', 31.01


-----------
12

нужно:

/*
"association_id" "vendor_id" "vendor_name" "vendor_amount" "association_id_1" "vendor_id_1" "vendor_name_1" "vendor_amount_1" "association_id_2" "vendor_id_2" "vendor_name_2" "vendor_amount_2"

1, 10, 'John', 20.00, 1, 11, 'Bill', 21.01, 1, 12, 'Oliver', 22.02
1, 13, 'Elijah', 23.03, null, null, null, null, null, null, null, null
2, 10, 'John', 24.04, 2, 14, 'William', 25.05, 2, 15, 'James', 26.06
3, 10, 'John', 27.07, 3, 14, 'William', 28.08, 3, 15, 'James', 29.09
3, 16, 'Lucas', 30.00, 3, 17, 'Henry', 31.01, null, null, null, null
*/
-----------------
5


т.е. каждая строка (запись, row) возвращает не 4 а 12 колонок, 4 своих и 8 из 2 последуюших строк (записей, rows).
если обе или одна из них (строк) относитса к следующей association_id, то соответсвенно колонки ХХХ_1 и ХХХ_2 заполняютса null, а дата из них переходит на новую строку.

Зараннее благодарен.
Спасибо.
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124614
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень хорошо для общего понимания осознать, что sql не выдает динамический набор полей на запись.

Каждое поле (association_id_1" "vendor_id_1" "vendor_name_1" "vendor_amount_1" "association_id_2" "vendor_id_2" "vendor_name_2" "vendor_amount_2") должно быть прописано в select и его источник установлен.

Вам нужен JOIN, что бы сделать вашу выборку, пока что просто концепт join.
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124622
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вводите служебное поле "row_number() over(partition by association_id ..) /4 as Row_new"
после чего раскладываете case -ом по остатку " % 4" на столбцы и делаете max/sum по желанию
ну или pivot

никакого join не нужно
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124636
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voronk,

Вы должны понимать, что основой реляционной базы данных являются неупорядоченные множества различимых элементов. То есть чтобы получить "а дата из них переходит на новую строку", необходимо выполнить определенные действия, приводящие к появлению признака порядка строк, поскольку "новая строка" в неупорядоченных множествах не существует. Например, результат запроса может быть упорядочен путём order by и помещен в упорядоченный массив на клиентском приложении для дальнейшей обработки.
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124638
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
voronk,

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


Читая фразы типа таких вопросов больше не имею (ц)
"Доброго времени суток"
"ЗараННее благодарен"
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124690
DjadkaDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
;with
res0 as (
select association_id, vendor_id, vendor_name, vendor_amount
, association_id_1 = lead(association_id, 1) over (partition by association_id order by vendor_id)
, vendor_id_1 = lead(vendor_id, 1) over (partition by association_id order by vendor_id)
, vendor_name_1 = lead(vendor_name, 1) over (partition by association_id order by vendor_id)
, vendor_amount_1 = lead(vendor_amount, 1) over (partition by association_id order by vendor_id)
, association_id_2 = lead(association_id, 2) over (partition by association_id order by vendor_id)
, vendor_id_2 = lead(vendor_id, 2) over (partition by association_id order by vendor_id)
, vendor_name_2 = lead(vendor_name, 2) over (partition by association_id order by vendor_id)
, vendor_amount_2 = lead(vendor_amount, 2) over (partition by association_id order by vendor_id)
, rn = 2 + ROW_NUMBER() over (partition by association_id order by vendor_id)
from #temp
)
select
association_id, vendor_id, vendor_name, vendor_amount
association_id_1, vendor_id_1, vendor_name_1, vendor_amount_1
association_id_2, vendor_id_2, vendor_name_2, vendor_amount_2
from res0 where rn%3=0
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124695
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо всем кто поучаствовал, в частности DjadkaDen, именно то, что нужно, премного благодарен.
...
Рейтинг: 0 / 0
Комрады, кому не лень, подскажите с запросом пожалуйста.
    #40124696
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин

Читая фразы типа таких вопросов больше не имею (ц)
"Доброго времени суток"
"ЗараННее благодарен"


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


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