Синтаксис SQL-запроса: значения столбцов - PullRequest
0 голосов
/ 22 декабря 2011

В качестве примера предположим, что мой набор данных содержит:

EMPLOYEE_ID
EMPLOYEE_NAME
EMPLOYEE_ACCT_ID
EMPLOYEE_ACCT_TYPE
EMPLOYEE_ACCT_BALANCE

Я хотел бы представить данные следующим образом:

EMPLOYEE   |   CHECKING   |   SAVINGS    |   INVESSTMENT   |   XMAS   |
_______________________________________________________________________

Mary       |     100.00   |     700.00   |      3,000.00   |    175.00
Jim        |     850.00   |     600.00   |      1,500.00   |      0.00

TOTAL      |     950.00   |    1,300.00  |      4,500.00   |    175.00

Где я застрял, какразбить EMPLOYEE_ACCT_TYPE на столбцы со значениями каждого типа счета, перечисленными с его балансом.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

То, что вы пытаетесь сделать, называется Pivot. Некоторые системы (например, SQL Server) имеют встроенную поддержку этого в SQL, но только если вы заранее знаете количество столбцов (т. Е. Вам придется жестко кодировать типы учетных записей в SQL). Другие системы не поддерживают естественное вращение (например, MySQL), поэтому вам потребуется написать хранимую процедуру или какой-нибудь динамический SQL для этого.

Поскольку вы не упоминаете, какую СУБД вы используете, это настолько точно, насколько я могу себе представить.

0 голосов
/ 22 декабря 2011

Для меня это звучит так, будто сначала вам нужно серьезно нормализоваться.Разбейте данные employee_account на свою собственную таблицу:

table: employee_account_data

EMPLOYEE_ACCT_ID int
EMPLOYEE_ACCT_TYPE varchar(15)
EMPLOYEE_ACCT_BALANCE decimal

Вам также понадобится таблица-мост, так как многие сотрудники могут иметь много учетных записей (от многих до многих):

таблица: employee_account_lookup

EMPLOYEE_ID int
EMPLOYEE_ACCT_ID int

Таким образом, вы не будете повторять employee_name для каждого типа аккаунта (как я подозреваю, вы сейчас).Если вы действительно хотите хорошо нормализоваться, вы также можете создать таблицу для хранения различных типов учетных записей сотрудников.Таким образом, вам не придется беспокоиться о том, что кто-то неправильно введет «Проверка» или «Экономия» при вводе данных.

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