Как сделать значение строки в заголовке столбца - PullRequest
0 голосов
/ 27 января 2020

Отредактировано: У меня есть таблица получения счета следующим образом. Здесь счет fee_title неизвестен. может быть несколько заголовков, больше чем 3 title

|  rec_no|   fee_title  | amount|
---------------------------------
|     1  |   monthly fee|    200|
|     1  |     tie fee  |    100|
|     2  |  computer fee|    150|
|     3  |   monthly fee|    200|
---------------------------------

Я хочу показать выше квитанцию ​​как

|  rec_no|   monthly fee| tie fee| computer fee |
-------------------------------------------------
|     1  |     200      |    100|         0     |
|     2  |       0      |      0|        150    |
|     3  |     200      |    0  |          0    |
-------------------------------------------------

Я нашел, что для решения этой проблемы я должен использовать PIVOT, но я не ' не знаю, как его использовать. Любой может помочь мне

1 Ответ

1 голос
/ 27 января 2020

Этого легче достичь с помощью условного агрегирования:

SELECT rec_no,
       SUM(CASE WHEN fee_title = 'monthly fee' THEN amount ELSE 0 END) AS [monthly fee],
       SUM(CASE WHEN fee_title = 'tie fee' THEN amount ELSE 0 END) AS [tie fee],
       SUM(CASE WHEN fee_title = 'computer fee' THEN amount ELSE 0 END) AS [computer fee]
FROM receipts
GROUP BY rec_no

Но вы также можете записать как PIVOT:

SELECT rec_no,
       COALESCE([monthly fee], 0) AS [monthly fee],
       COALESCE([tie fee], 0) AS [tie fee],
       COALESCE([computer fee], 0) AS [computer fee]
FROM receipts
PIVOT (
  SUM(amount)
  FOR fee_title IN ([monthly fee], [tie fee], [computer fee])
) AS p

В обоих случаях выведите:

rec_no  monthly fee     tie fee     computer fee
1       200             100         0
2       0               0           150
3       200             0           0

Демонстрация по SQLFiddle

...