SQL行转换为列问题.

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:23:56
有个关于人事的问题:
第一个表格:SALARY
salaryid salaryname
1 基本工资
2 补贴
3 奖金
4 代扣医保
(表的内容是随时可以更新的)
--===================
第2个表格department
deptid deptname
1 总部
2 信息部
-===============内容可以增加.

要求:将这两个表格关联,使--每个部门可以包含多个薪水类型.
我的想法:组成下面的表格:
salaryID deptid1 deptid2 deptid3......
1 1 1 1
2 0 1 0
3 1 1 0
...
其中0代表不包括,1代表包括.如果这样设计可以的话应该用什么代码实现呢?
如果不可以的话应该怎么设计呢?
/*
回楼下:这是主管给出的题,
要求:SALARY和DEPT是两个可以添加和更新内容的表.如果把SALRY设成四个字段就不能添加新薪水类别了.
*/

1.逻辑不对。
您给的只是代码表。没有数据表。
您是要把纵向数据改成横向数据,但纵向的数据在哪里?
换句话说您只给出了单位和工资项目,这谁会知道哪个单位有什么项目?
要作什么都没搞清楚,当然不会作了。

2.第三个表才是您要转换的表。
第三个表至少要有这样两个字段:
字段:DEPARTID,SALARYID
数据:
----1----1
----1----3
----2----1
----2----2
----2----3
----3----1
以上数据是与您的数据内容相一致的。但这是纵表,您要把他变成横表是不是就很清楚怎么操作了?生成一个动态查询,通过EXEC 执行就行了,你给的那两个表只是用来查询出代码对应的名称。

二维查询嘛,其实可以实现,但是没必要写那么多繁琐的代码来实现,个人建议还是改一下设计好

Salary表的字段固定为4个,所以最好把这个设置为columnHeader,而department表设置为rowheader。
salaryid1 salaryid2 salaryid3
deptid1 1 0 1
deptid2 1 0 1
deptid3 1 0 0
...

再加一个表表示 两者的关系

deptid salaryid
1 1
2 1
2 2
3 2

等等,这样再加新的部门和工资待遇的也不用修改表的结构,只要
往“deptid salaryid” 里面添加一条记录就行了