#sql #row #line
#sql #строка #линия
Вопрос:
Я борюсь с этой простой на вид проблемой, когда хочу преобразовать строки для одного идентификатора в столбцы. Таким образом, в столбце будет X , если у этого идентификатора есть строка с этим значением, но без использования PIVOT, поскольку я не на 11g, так что это должен быть какой-то древний способ 🙂 Если это возможно, как я считаю, я просто не в состоянии взломать его самостоятельно. Спасибо за помощь всем, кто любит сложные задачи и думает, что это легко, как кажется, но это не так :/
Итак, если у меня есть
ID Access DB1 DB2 DC1
1 DB1 x 0 0
1 DB2 0 0 0
1 DC1 0 0 x
2 DB1 x 0 0
2 DB2 0 x 0
3 DC1 0 0 x
Таким образом, результатом того, что я ищу, будет всего 3 строки
ID DB1 DB2 DC1
1 x 0 x
2 x x 0
3 0 0 x
https://data.stackexchange.com/stackoverflow/query/edit/1338592
Мне интересно, не было бы у меня этих 3 других столбцов, а были бы только первые два. Каким будет способ преобразования строк в столбцы? Во-первых, если бы было точное число, то в нашем случае 3 столбца DB1, DB2 и DC1, а что, если число не будет известно, поэтому все отдельные строки будут создавать новые столбцы. Кто-нибудь за вызов.
Вход 1
ID Access
1 DB1
1 DB2
1 DC1
2 DB1
2 DB2
3 DC1
Результаты 1
ID DB1 DB2 DC1
1 DB1 DB2 DC1
2 DB1 DB2
3 DC1
Ответ №1:
Похоже, вы хотите max()
:
select id, max(db1), max(db2), max(db3)
from t
group by id;
Комментарии:
1. Спасибо, да, это было именно то, что мне было нужно. Знание — это сила 😉
2. Мне интересно, что было бы, если бы у меня не было этих 3 других столбцов, а были только первые два. Каким будет способ преобразования строк в столбцы. Во-первых, если будет точное число, то в нашем случае 3 столбца DB1, DB2 и DC1, и что, если число не будет известно, поэтому вся отдельная строка создаст новый столбец. Кто-нибудь за вызов. Ввод 1 Идентификатор доступа 1 DB1 1 DB2 1 DC1 2 DB1 2 DB2 3 DC1 Результаты 1 Идентификатор DB1 DB2 DC1 1 DB1 DB2 DC1 2 DB1 DB2 3 DC1
3. @PeterKepo . , , Вы должны задавать новые вопросы как новый вопрос , а не комментарий. Однако, если вы не знаете, сколько столбцов в результирующем наборе, вам нужно использовать динамический SQL — сконструировать инструкцию SQL в виде строки в приложении, а затем выполнить ее.