举个例子,假设我的数据集成立:
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划分为列,每个帐户类型值都列在其余额中。提前谢谢。
答案 0 :(得分:1)
你要做的是一个叫做Pivot的人。某些系统(例如SQL Server)在SQL中对此具有本机支持,但前提是您事先知道列数(即,您必须将帐户类型硬编码到SQL中)。其他系统不支持本地转动(例如MySQL),因此您需要编写存储过程或一些动态SQL来执行此操作。
既然你没有提到你正在使用的DBMS,那就是我能得到的具体内容。
答案 1 :(得分:0)
首先,我觉得你需要做一些严肃的规范化。将employee_account数据分解到自己的表中:
表:employee_account_data
EMPLOYEE_ACCT_ID int
EMPLOYEE_ACCT_TYPE varchar(15)
EMPLOYEE_ACCT_BALANCE decimal
您还需要一个桥接表,因为许多员工可以拥有多个帐户(多对多):
table:employee_account_lookup
EMPLOYEE_ID int
EMPLOYEE_ACCT_ID int
这样,您就不会为每种帐户类型重复employee_name(因为我怀疑您现在是这样)。如果您真的想要很好地规范化,您还可以创建一个表来保存不同的员工帐户类型。这样你就不必担心有人在数据录入时错误地“检查”或“储蓄”。