Допустим, у меня есть таблица в базе данных ORACLE, как:Как построить SQL-запрос для извлечения разных строк из одной таблицы в разных столбцах?
ACC_ID | ACC_AMT
111 | 10000
111 | 12000
111 | 14000
222 | 25000
222 | 30000
333 | 18000
333 | 27000
333 | 13000
333 | 15000
Я хочу, чтобы получить выход как:
ACC_ID_1 | ACC_AMT_1 | ACC_ID_2 | ACC_AMT_2 | ACC_ID_3 | ACC_AMT_3
111 | 10000 | 222 | 25000 | 333 | 18000
111 | 12000 | 222 | 30000 | 333 | 27000
111 | 14000 | null | null | 333 | 13000
null | null | null | null | 333 | 15000
мне нужно каждый различный ACC_ID с ACC_AMT в разных колонках. В таблице также может быть другой другой идентификатор ACC_ID, но я приведу только то, что мне нужно. Каков наилучший способ сделать это?
До сих пор я попытался это:
SELECT
(CASE WHEN ACC_ID=111 THEN ACC_ID END) AS ACC_ID_1,
(CASE WHEN ACC_ID=111 THEN ACC_AMT END) AS ACC_AMT_1,
(CASE WHEN ACC_ID=222 THEN ACC_ID END) AS ACC_ID_2,
(CASE WHEN ACC_ID=222 THEN ACC_AMT END) AS ACC_AMT_2,
(CASE WHEN ACC_ID=333 THEN ACC_ID END) AS ACC_ID_3,
(CASE WHEN ACC_ID=333 THEN ACC_AMT END) AS ACC_AMT_3
FROM <TABLE_NAME>
Но я не получаю желаемого результата.
Как один сделать связь между 111 и 222 в вашем примере? Является ли '111 | 10000 | 222 | 30000' столь же действительным, как' 111 | 10000 | 222 | 25000', или существует какая-то неявная логика, которую вы не определили? – billinkc
@Sanpopo До сих пор в SQL добавлен SQL-код. -Благодаря. – user2401587
@ user2401587 - у вас есть только три возможных значения для столбца 'acc_id', т. Е. 111, 222 и 333? –