Получить из одной и той же таблицы значение одного столбца из другого идентификатора - PullRequest
0 голосов
/ 18 мая 2018

У меня есть таблица сопоставления с ID и столбцом D_DESC.Я хочу взять значение D_DESC, передавая более одного идентификатора, например:

ID  D_DESC
1   DESC_ID1
2   DESC_ID2
3   DESC_ID3

Результат должен быть

D_DESC1    D_DESC2
DESC_ID1   DESC_ID2

Я сделал этот запрос:

SELECT t1.D_DESC AS DESC_1,t2.D_DESC AS DESC_2 
FROM  Tabel t1,Tabel t2 
WHERE '1'=t1.ID  
AND   '2'=t2.ID

Это возвращает именно то, что я хочу, но если я хочу поставить также нулевое значение, если идентификатор не передается.Например, я хочу также показать этот результат из запроса (SELECT t1.D_DESC AS DESC_1,t2.D_DESC AS DESC_2 FROM Tabel t1,Tabel t2 WHERE '1'=t1.ID AND ''=t2.ID;):

D_DESC1    D_DESC2
DESC_ID1   null

Suggest?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Это операция PIVOT.

SELECT *
FROM Table1
PIVOT(MAX(D_DESC) FOR id IN (
             1 AS D_DESC1
            ,2 AS D_DESC2
            ,3 AS D_DESC3
            ));

Это дает:

|  D_DESC1 |  D_DESC2 |  D_DESC3 |
|----------|----------|----------|
| DESC_ID1 | DESC_ID2 | DESC_ID3 |  

Если вы хотите передать NULL для id2, напишите

SELECT *
FROM Table1
PIVOT(MAX(D_DESC) FOR id IN (
            1 AS  D_DESC1
        ,NULL AS  D_DESC2
           ,3 AS  D_DESC3
            ));

, что дает

|  D_DESC1 | D_DESC2 |  D_DESC3 |
|----------|---------|----------|
| DESC_ID1 |  (null) | DESC_ID3 |   
0 голосов
/ 18 мая 2018

Если вам нужна только одна строка с разными IDS, то вы можете сделать это:

select max(case when id = 1 then D_DESC end) DESC_1,
       max(case when id = 2 then D_DESC end) DESC_2
from table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...