|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
Доброго всем времени суток. 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, а дата из них переходит на новую строку. Зараннее благодарен. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 19:51 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
Очень хорошо для общего понимания осознать, что 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 05:56 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
вводите служебное поле "row_number() over(partition by association_id ..) /4 as Row_new" после чего раскладываете case -ом по остатку " % 4" на столбцы и делаете max/sum по желанию ну или pivot никакого join не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 10:37 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
voronk, Вы должны понимать, что основой реляционной базы данных являются неупорядоченные множества различимых элементов. То есть чтобы получить "а дата из них переходит на новую строку", необходимо выполнить определенные действия, приводящие к появлению признака порядка строк, поскольку "новая строка" в неупорядоченных множествах не существует. Например, результат запроса может быть упорядочен путём order by и помещен в упорядоченный массив на клиентском приложении для дальнейшей обработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 12:38 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
Владислав Колосов voronk, Вы должны понимать, что основой реляционной базы данных являются неупорядоченные множества различимых элементов. То есть чтобы получить "а дата из них переходит на новую строку", необходимо выполнить определенные действия, приводящие к появлению признака порядка строк, поскольку "новая строка" в неупорядоченных множествах не существует. Например, результат запроса может быть упорядочен путём order by и помещен в упорядоченный массив на клиентском приложении для дальнейшей обработки. Читая фразы типа таких вопросов больше не имею (ц) "Доброго времени суток" "ЗараННее благодарен" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 12:43 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
;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 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 19:17 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
Большое спасибо всем кто поучаствовал, в частности DjadkaDen, именно то, что нужно, премного благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 19:47 |
|
Комрады, кому не лень, подскажите с запросом пожалуйста.
|
|||
---|---|---|---|
#18+
Ролг Хупин Читая фразы типа таких вопросов больше не имею (ц) "Доброго времени суток" "ЗараННее благодарен" Мне кажетса здесь пропущена запятая и посему, данную фразу можно толковать по разному. А насчёт НН, вы действительно правы, приношу свои извинения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 19:53 |
|
|
start [/forum/topic.php?fid=46&msg=40124614&tid=1683955]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 235ms |
total: | 376ms |
0 / 0 |