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

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

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

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

Наверняка это все уже решено, но я не знаю, по каким словам гуглить.
Давай более конкретно - пример таблиц и данных и что за СУБД? MSSQL? MySQL?
...
Рейтинг: 0 / 0
Как повернуть таблицу на 90°?
    #110646
IT-Христ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  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
Как повернуть таблицу на 90°?
    #110693
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  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
Как повернуть таблицу на 90°?
    #110694
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Христ  09.08.2022, 12:01
[игнорируется]
Сдаётся, у товарища неправильно поставленная задача.
Как обычно.
...
Рейтинг: 0 / 0
Как повернуть таблицу на 90°?
    #110696
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
...
Рейтинг: 0 / 0
Как повернуть таблицу на 90°?
    #110725
IT-Христ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  09.08.2022, 13:33
[игнорируется]
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
Да занафига тебе таблицу поворачивать. чтобы на клиенте показать?
Пусть клиент поворачивает!
...
Рейтинг: 0 / 0
Как повернуть таблицу на 90°?
    #110746
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
IT-Христ  09.08.2022, 13:56
[игнорируется]
Просто Трёп  09.08.2022, 13:33
[игнорируется]
Я уже склоняюсь к тому, чтобы это на клиенте делать. На каком-нибудь сишарпе или Дельфи два вложенных цикла пробежать - как два байта обсосать. Но придется дополнительный запрос к скулю делать.
Да занафига тебе таблицу поворачивать. чтобы на клиенте показать?
Пусть клиент поворачивает!
(монитор )
:)))
...
дед-пердед
Изменено: 09.08.2022, 14:12 - Гарыныч
Рейтинг: 0 / 0
Как повернуть таблицу на 90°?
    #110796
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  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
Как повернуть таблицу на 90°?
    #110805
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет [игнорируется] 

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

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
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [закрыт для гостей] / Как повернуть таблицу на 90°?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Yandex Bot
Пользователи онлайн (39): Анонимы (33), zzdima, Брюквенные годы, Yandex Bot, Просто Трёп 1 мин., Antonariy 3 мин., Bing Bot 5 мин.
x
x
Закрыть


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