powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать поле в зависимости от того, что лежит в другом
12 сообщений из 12, страница 1 из 1
Выбрать поле в зависимости от того, что лежит в другом
    #40088228
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть 2 поля, в одном из них лежат значения, которые нужно разделить на 2 столбца, в зависимости от того, что лежит во втором столбце.

НАПРИМЕР,
Столбец 1 Столбец2
Яблоко Фрукты
Груша Овощи
Банан Фрукты
Помидор овощи
Огурец овощи

Что нужно получить:
Фрукты Овощи
Яблоко помидор
Груша огурец
Банан



Подскажите, как это написать sql запросом.
Спасибо!
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088237
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
Добрый день!

Есть 2 поля, в одном из них лежат значения, которые нужно разделить на 2 столбца, в зависимости от того, что лежит во втором столбце.

НАПРИМЕР,
Столбец 1 Столбец2
Яблоко Фрукты
Груша Овощи
Банан Фрукты
Помидор овощи
Огурец овощи

Что нужно получить:
Фрукты Овощи
Яблоко помидор
Груша огурец
Банан



Подскажите, как это написать sql запросом.
Спасибо!



Ваш вариант, что не получается?

Например, CASE использовать
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088240
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (c1 varchar(30), c2 varchar(30));
insert into @t
values
 ('Яблоко', 'Фрукты'),
 ('Груша', 'Фрукты'),
 ('Банан', 'Фрукты'),
 ('Помидор', 'овощи'),
 ('Огурец', 'овощи');

select
 p.[Фрукты], p.[Овощи]
from
 (select c1, c2, row_number() over (partition by c2 order by c1) from @t) t (c1, c2, rn)
pivot
(
 min(c1) for c2 in ([Фрукты], [Овощи])
) p;
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088320
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин, не получается через case, поправьте, пожалуйста, синтаксис:

Таблица table:
column1 column2яблоко фруктбанан фруктгруша фруктпомидор овощогурец овощ

Код: plsql
1.
2.
3.
4.
select
        case when t.column2 = 'фрукт' then t.column1 AS Fruit
        else when t.column2 = 'овощ' then t.column1 AS Vet
from table as t



Результат:
Fruit Vetяблоко помидорбанан огурецгруша

Нужно именно чтобы два столбца в результате выводилось
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088369
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
Ролг Хупин, не получается через case, поправьте, пожалуйста, синтаксис:

Таблица table:
column1 column2яблоко фруктбанан фруктгруша фруктпомидор овощогурец овощ


Код: plsql
1.
2.
3.
4.
select
        case when t.column2 = 'фрукт' then t.column1 AS Fruit
        else when t.column2 = 'овощ' then t.column1 AS Vet
from table as t



Результат:
Fruit Vetяблоко помидорбанан огурецгруша

Нужно именно чтобы два столбца в результате выводилосьКогда свой синтаксис придумываешь - всегда не получается. Вы бы хоть документацию про выражение CASE почитали бы для начала ... Там и синтаксически правильные примеры есть. И с простым CASE и с поисковым
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088384
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,
ну что поделать, все равно не додумался как два поля через один кейс вывести...но спасибо за ссылку
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088402
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
как два поля через один кейс вывести
Данная задача только case'ом не решвется. Ни одним, ни множеством.
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088409
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, а как реализовать, подскажите, пожалуйста
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088411
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86,

Ответы читаете?
22354641
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088471
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Да, но у меня таблица уже создана и на Терадате min(c1) не проходит синтаксис
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088477
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86,

Вариант без pivot
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
 min(case when Столбец2 = 'Фрукты' then Столбец1 end) as [Фрукты],
 min(case when Столбец2 = 'Овощи' then Столбец1 end) as [Овощи]
from
 (
  select
   Столбец1, Столбец2, row_number() over (partition by Столбец2 order by Столбец1)
  from
   [таблица уже создана]
 ) t (Столбец1, Столбец2, rn)
group by
 rn;
...
Рейтинг: 0 / 0
Выбрать поле в зависимости от того, что лежит в другом
    #40088527
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
на Терадате min(c1) не проходит синтаксис

Терадата - это Оракл.
Зачем заводить тему в ветке MSSQL?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать поле в зависимости от того, что лежит в другом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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