Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Как повернуть таблицу на 90°? / 13 сообщений из 13, страница 1 из 1
09.08.2022, 11:07
    #110611
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Если имею на входе датасет id1, id2, id3, id4, а на выходе хочу получить одну строку value1, value2, value3, value4?

Ну или другими словами, на входе я имею два запроса, один отдает 3 строки, второй 4 строки. А мне надо получить одну таблицу 3 на 4. Размерность заранее неизвестна, но не бесконечна.

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
...
Рейтинг: 0 / 0
09.08.2022, 11:13
    #110615
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Я отвечу как просто программист..
Сначала получаешь список значений полей по которым будешь строить колонки. потом надо каким то образом подсчитать сколько у тебя строк, получив имена полей..
В результате устраиваешь два вложенных цикла, в одном перебираешь значения полей, в другой имена колонок, и по каждому проходу формируешь строку.
...
Изменено: 09.08.2022, 11:13 - IT-Христ
Рейтинг: 0 / 0
09.08.2022, 11:22
    #110619
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
или case или pivot.
но если размерность заранее неизвестна, то придется динамический sql.
...
Рейтинг: 0 / 0
09.08.2022, 11:53
    #110638
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Просто Трёп  09.08.2022, 11:07
[игнорируется]
Если имею на входе датасет id1, id2, id3, id4, а на выходе хочу получить одну строку value1, value2, value3, value4?

Ну или другими словами, на входе я имею два запроса, один отдает 3 строки, второй 4 строки. А мне надо получить одну таблицу 3 на 4. Размерность заранее неизвестна, но не бесконечна.

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
Давай более конкретно - пример таблиц и данных и что за СУБД? MSSQL? MySQL?
...
Рейтинг: 0 / 0
09.08.2022, 12:01
    #110646
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Дед-Папыхтет  09.08.2022, 11:53
[игнорируется]
Просто Трёп  09.08.2022, 11:07
[игнорируется]
Если имею на входе датасет id1, id2, id3, id4, а на выходе хочу получить одну строку value1, value2, value3, value4?

Ну или другими словами, на входе я имею два запроса, один отдает 3 строки, второй 4 строки. А мне надо получить одну таблицу 3 на 4. Размерность заранее неизвестна, но не бесконечна.

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
Давай более конкретно - пример таблиц и данных и что за СУБД? MSSQL? MySQL?
Сдаётся, у товарища неправильно поставленная задача.
...
Рейтинг: 0 / 0
09.08.2022, 13:27
    #110693
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Дед-Папыхтет  09.08.2022, 11:53
[игнорируется]
Просто Трёп  09.08.2022, 11:07
[игнорируется]
Если имею на входе датасет id1, id2, id3, id4, а на выходе хочу получить одну строку value1, value2, value3, value4?

Ну или другими словами, на входе я имею два запроса, один отдает 3 строки, второй 4 строки. А мне надо получить одну таблицу 3 на 4. Размерность заранее неизвестна, но не бесконечна.

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
Давай более конкретно - пример таблиц и данных и что за СУБД? MSSQL? MySQL?
MS SQL.
С таблицами сложно. Есть два результата запросов, они промежуточные и нигде не хранятся. Получаются каждый раз, когда юзверь чего-то хочет.
1 l_val4 3 l_val1 4 l_val1 1 str1 1 str2 3 str3 4 str4
Надо получить табличку 3 на 4
l_val4 + str1 l_val4 + str2 l_val4 + str3 l_val4 + str4 l_val1 + str1 l_val1 + str2 l_val1 + str3 l_val1 + str4 l_val1 + str1 l_val1 + str2 l_val1 + str3 l_val1 + str4
...
Рейтинг: 0 / 0
09.08.2022, 13:27
    #110694
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
IT-Христ  09.08.2022, 12:01
[игнорируется]
Сдаётся, у товарища неправильно поставленная задача.
Как обычно.
...
Рейтинг: 0 / 0
09.08.2022, 13:33
    #110696
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
...
Рейтинг: 0 / 0
09.08.2022, 13:56
    #110725
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Просто Трёп  09.08.2022, 13:33
[игнорируется]
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
Да занафига тебе таблицу поворачивать. чтобы на клиенте показать?
Пусть клиент поворачивает!
...
Рейтинг: 0 / 0
09.08.2022, 14:12
    #110746
Гарыныч
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
IT-Христ  09.08.2022, 13:56
[игнорируется]
Просто Трёп  09.08.2022, 13:33
[игнорируется]
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
Да занафига тебе таблицу поворачивать. чтобы на клиенте показать?
Пусть клиент поворачивает!
(монитор )
:)))
...
дед-пердед
Изменено: 09.08.2022, 14:12 - Гарыныч
Рейтинг: 0 / 0
09.08.2022, 15:07
    #110796
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Просто Трёп  09.08.2022, 13:27
[игнорируется]
Дед-Папыхтет  09.08.2022, 11:53
[игнорируется]
Просто Трёп  09.08.2022, 11:07
[игнорируется]
Если имею на входе датасет id1, id2, id3, id4, а на выходе хочу получить одну строку value1, value2, value3, value4?

Ну или другими словами, на входе я имею два запроса, один отдает 3 строки, второй 4 строки. А мне надо получить одну таблицу 3 на 4. Размерность заранее неизвестна, но не бесконечна.

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
Давай более конкретно - пример таблиц и данных и что за СУБД? MSSQL? MySQL?
MS SQL.
С таблицами сложно. Есть два результата запросов, они промежуточные и нигде не хранятся. Получаются каждый раз, когда юзверь чего-то хочет.
1 l_val4 3 l_val1 4 l_val1 1 str1 1 str2 3 str3 4 str4
Надо получить табличку 3 на 4
l_val4 + str1 l_val4 + str2 l_val4 + str3 l_val4 + str4 l_val1 + str1 l_val1 + str2 l_val1 + str3 l_val1 + str4 l_val1 + str1 l_val1 + str2 l_val1 + str3 l_val1 + str4
только без динамического sql обязательно нужно знать все значения колонок... в твоем случае 4 колонки...
ptpivot.JPG
...
Рейтинг: 2 / 0
09.08.2022, 15:33
    #110805
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повернуть таблицу на 90°?
Дед-Папыхтет [игнорируется] 

Спасибо. Картинка обрезана. Можно код скопипастить?
А, не. Все норм.
...
Изменено: 09.08.2022, 15:35 - Просто Трёп
Рейтинг: 0 / 0
17.08.2022, 10:37
    #118365
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Как повернуть таблицу на 90°?
Рецепт от Крысопыта.

https://murcode.ru/search/RatTail/page-9/?message=False&topic=False&user=True&forum=1&orderby=byDefault
Код: 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.
А вот мой вариант (сырой, т.к. я лечусь в клинике доктора Мензиса "Просто треп"):

set nocount on
create table t (mat varchar(7), endc varchar(7), ee varchar(7), op int)
insert into t (mat,endc,ee,op) values('1','11','111',1)
insert into t (mat,endc,ee,op) values('2','22','222',2)
insert into t (mat,endc,ee,op) values('3','33','333',3)
insert into t (mat,endc,ee,op) values('4','44','444',5)
insert into t (mat,endc,ee,op) values('5','55','555',4)

declare @i int set @i=1
declare @s varchar(255) set @s='f varchar(7)'
while @i<=(select count(*) from t)
begin set @s=@s+', op'+cast(@i as varchar(255))+' varchar(7)' set @i=@i+1 end
set @s='create table tt ('+@s+')'
exec(@s)

declare @j int set @j=1 declare @n varchar(255)
while @j<(select count(column_name) from information_schema.columns where table_name="t")
begin
set @n=(select column_name from information_schema.columns where table_name="t" and ordinal_position=@j)
insert into tt (f) values(@n)
set @j=@j+1
end

declare @uu varchar(255)
declare @jj int declare @nn varchar(33) declare @ii int set @ii=1
while @ii<(select count(column_name) from information_schema.columns where table_name="t")
begin
set @jj=1
set @nn=(select column_name from information_schema.columns where table_name="t" and ordinal_position=@ii)
while @jj<=(select count(*) from t)
begin
set @uu='update tt set op' + cast(@jj as varchar(33)) +
'=(select ' + @nn + ' from t where op=' + cast(@jj as varchar(33)) + ') where f="' + @nn+ '"'
exec(@uu)
set @jj=@jj+1
end
set @ii=@ii+1
end
set nocount off
select * from tt
drop table t
drop table tt
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [закрыт для гостей] / Как повернуть таблицу на 90°? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (3): Анонимы (2), Bing Bot 6 мин.
Пользователи онлайн (129): Анонимы (122), Yandex Bot, Буся 1 мин., Bing Bot 1 мин., IT-Клоп 2 мин., Мару 4 мин., Гарыныч 8 мин., anonymous 9 мин.
x
x
Закрыть


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