Транспонировать строки в columsn в SQL - PullRequest
0 голосов
/ 25 сентября 2019

Я хотел бы переместить строки в столбцы в sql.

Моя таблица выглядит следующим образом:

+-------+--------+--------------+---------+--------------+---------+----------------+---------+---------+---------+---------+---------+
|  ID   |  Desk  |   Reason1    | Amount1 |   Reason2    | Amount2 |    Reason3     | Amount3 | Reason4 | Amount4 | Reason5 | Amount5 |
+-------+--------+--------------+---------+--------------+---------+----------------+---------+---------+---------+---------+---------+
| 34850 | Desk1  | nktp         |       2 | sectors      |       1 | auc            |       1 | thr     |     -13 | other   |      -3 |
| 34851 | Desk2  | TOC Reb      |       5 | SG & HK ETF  |       5 |                |       0 |         |       0 |         |       0 |
| 34853 | Desk3  | China        |      -5 | HK           |       0 | CNH            |       0 | HK2     |      35 |         |       0 |
| 34854 | Desk4  | ETFs         |       2 | KSTA Opening |       6 | KSTA Rebalance |      14 |         |       0 |         |       0 |
| 34855 | Desk5  | BTC          |       5 |              |       0 |                |       0 |         |       0 |         |       0 |
| 34856 | Desk6  | Sales        |      10 | Delta        |       5 |                |       0 |         |       0 |         |       0 |
| 34857 | Desk7  | ES           |       1 | HSI          |       0 |                |       0 |         |       0 |         |       0 |
| 34858 | Desk8  | OTC          |      10 | SPREADS      |      10 |                |       0 |         |       0 |         |       0 |
| 34859 | Desk9  | MES/ZTW      |      10 | O/N Spreads  |     -20 |                |       0 |         |       0 |         |       0 |
| 34860 | Desk10 | CBBC TENCENT |       4 | CBBC HSI     |       1 |                |       0 |         |       0 |         |       0 |
+-------+--------+--------------+---------+--------------+---------+----------------+---------+---------+---------+---------+---------+

Как мне переставить таблицу в SQL, где причинами являются строкиа стол - колонны?

Требуется вывод:

+

----------------+---------+--------+-------------+--------+-------+--------+
|                |  Desk1  | Amount |    Desk2    | Amount | Desk3 | Amount |
+----------------+---------+--------+-------------+--------+-------+--------+
| Reason1        | nktp    |      2 | TOC Reb     |      5 | China |     -5 |
| Reason2        | sectors |      1 | SG & HK ETF |      5 | HK    |      0 |
| Reason3        | auc     |      1 |             |        | CNH   |      0 |
| Reason4        | thr     |    -13 |             |        | HK2   |     35 |
| Reason5        | other   |     -3 |             |        |       |        |
| General_Remark |         |        |             |        |       |        |
+----------------+---------+--------+-------------+--------+-------+--------+

1 Ответ

1 голос
/ 25 сентября 2019

Нормализованный дизайн может выглядеть примерно так:

reasons
+-----------+---------+----------------+--------+
| reason_id | desk_id | reason         | amount |
+-----------+---------+----------------+--------+
|         1 |   34850 | nktp           |      2 |
|         2 |   34851 | TOC Reb        |      5 |
|         3 |   34853 | China          |     -5 |
|         4 |   34854 | ETFs           |      2 |
|         5 |   34855 | BTC            |      5 |
|         6 |   34856 | Sales          |     10 |
|         7 |   34857 | ES             |      1 |
|         8 |   34858 | OTC            |     10 |
|         9 |   34859 | MES/ZTW        |     10 |
|        10 |   34860 | CBBC TENCENT   |      4 |

|        11 |   34850 | sectors        |      1 |
|        12 |   34851 | SG & HK ETF    |      5 |
|        13 |   34853 | HK             |      0 |
|        14 |   34854 | KSTA Opening   |      6 |
|        15 |   34856 | Delta          |      5 |
|        16 |   34857 | HSI            |      0 |
|        17 |   34858 | SPREADS        |     10 |
|        18 |   34859 | O/N Spreads    |    -20 |
|        19 |   34860 | CBBC HSI       |      1 |

|        20 |   34850 | auc            |      1 |
|        21 |   34853 | CNH            |      0 |
|        22 |   34854 | KSTA Rebalance |     14 |

|        23 |   34850 | thr            |    -13 |
|        24 |   34853 | HK2            |     35 |

|        25 |   34850 | other          |     -3 |
+-----------+---------+----------------+--------+

desks         
+---------+------------+
| desk_id |  Desk_name |
+---------+------------+
|   34850 | Desk1      |
|   34851 | Desk2      |
|   34853 | Desk3      |
|   34854 | Desk4      |
|   34855 | Desk5      |
|   34856 | Desk6      |
|   34857 | Desk7      |
|   34858 | Desk8      |
|   34859 | Desk9      |
|   34860 | Desk10     |
+---------+------------+

Если бы это был я, я бы начал отсюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...