Транспонирование строк в столбцы с помощью самостоятельного объединения - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть таблица с именем category со значениями, как показано ниже,

CategoryId | Значение | Флаг

1 25 а
2 26 а
3 27 а
1 28 м
2 23 м
1 36 р
2 33 р

Теперь я хочу переместить строки, представленные в этой таблице, в столбцы, основанные на флаге, что-то вроде

CategoryId | aValue | mValue | * P-значение 1015 * 1 25 28 36
2 26 23 33
3 27 ноль ноль

Я пытаюсь присоединиться на основе идентификатора категории, но я просто получаю совпадающие записи (внутреннее объединение) в моем наборе результатов, даже если я использую левое внешнее объединение в своем запросе.

Мой запрос:

SELECT 
  A.CategoryId, 
  A.Value AS actual, 
  B.Value AS projected, 
  C.Value AS Manual
FROM ((a AS A left JOIN b AS B ON A.categoryid=B.categoryid) 
  left JOIN c AS C ON A.categoryid=C.categoryid) 
WHERE (((A.flag)="a") and ((B.flag)="p") and ((C.flag) ="m"))

Я получаю правильные результаты, если у меня есть данные в 3 разных таблицах.

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

Спасибо, Барани

1 Ответ

3 голосов
/ 20 сентября 2011

Попробуйте это:

SELECT CategoryId, 
       MIN(SWITCH(YourTable.Flag = 'a',Value)) AS aValue,
       MIN(SWITCH(YourTable.Flag = 'm',Value)) AS mValue,
       MIN(SWITCH(YourTable.Flag = 'p',Value)) AS pValue
FROM YourTable
GROUP BY CategoryId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...