SQL数据库表设计

,要查询出上面的表格,数据库表格要如何设计,查询的SQL语句又要如何写呢?

表设计:

部门编号,部门名称,使用类型,执行情况,制度类型(a,b,c)

 

语句:

为简略,下面简写

部门名称:id

使用类型:a

执行情况:b

制度类型:c

select id,max(t2.a),max(t2.b),max(t3.a),max(t3.b),max(t4.a),max(t4.b)
from test t1 left join (select * from  test where c='A')  t2 on t1.id=t2.id and t1.c=t2.c
                  left join (select * from  test where c='b')  t3 on t1.id=t3.id and t1.c=t3.c
                 left join (select * from  test where c='c')  t4 on t1.id=t4.id and t1.c=t4.c
group by id

 直接这上面写的,没测试,领会精神吧,应该是没错

追问

SQL语句能不能变成动态的? 部门和制度都数量都可能变化的。。。

追答

部门和制度都数量都可能变化的 ,什么意思,没看明白

追问

就是这个表不是固定的,行数和列数都可能会增加,(比如:今天新增了一个制度,如果用上面的SQL语句,我不得又回来改SQL语句了么。。。能不能写个通用一点一点的。。。)就像 http://blog.csdn.net/szstephenzhou/article/details/7091819 的动态SQL。。。

追答

...你要动态列名,那很麻烦的,你发的这个也不会是动态列明的,因为pivot方法也是要写出来列名称的,你想,要不我怎么知道你的列名起的名字是什么,你这肯定要写函数了,等于说要给你定义的列名一个规则,然后用pivot来实现,很麻烦,,

温馨提示:答案为网友推荐,仅供参考
相似回答