首页 新闻 赞助 找找看

SQL语句多行数据转成多列问题

0
悬赏园豆:20 [已解决问题] 解决于 2019-08-02 15:24

以前没有遇到过这种情况,要做的时候有点懵。 望老哥指点,多谢!

有这样一个需求,一个表单主表,一个扩展列表,查询的时候要把扩展列表中的多行转成主表多列。

比如

dt_zhubiao 

id type title
1 1 表单1-1
2 1 表单1-2
3 2 表单2-1
4 2 表单2-2


dt_kuozhanbiao

id formid name title value
1 1 ext_a 工龄 18
2 1 ext_b 职称 副级
3 2 ext_a 工龄 20
4 2 ext_b 职称 正级
5 3 ext_2a 字段1 值1
6 3 ext_2b 字段2 值2
7 3 ext_2c 字段3 值3
8 4 ext_2a 字段1 值21
9 4 ext_2b 字段2 值22
10 4 ext_2c 字段3 值23

查询时,会根据dt_zhubiao表的type来查询,type字段一样时,dt_kuozhanbiao表条数和name都会一致,value不一致。

想要的结果如下:

查询type=1时,select * from dt_zhubiao where type = 1 ... 

id type title ext_a ext_b
1 1 表单1-1 18 副级
2 1 表单1-2 20 正级

查询type=2时,select * from dt_zhubiao where type =2 ...

id type title ext_2a ext_2b ext_2c
3 2 表单2-1 值1 值2 值3
4 2 表单2-2 值21 值22 值23

那么问题来了,基于 select * from dt_zhubiao where type = ? 基础sql语句,如何生成这种查询结果 ? 

之前试过join、union都没有实现出来,困扰许久,望老哥解惑!

sql
尾随前行的主页 尾随前行 | 初学一级 | 园豆:0
提问于:2019-07-31 12:26

建议别写sql了,把数据查出来后再拼接

会长 4年前

@会长: 去程序拼接的话是麻烦一点, 所以就想看看SQL能不能直接实现的。

尾随前行 4年前

@尾随前行: 比写sql简单,我觉得这sql没法写

会长 4年前

@尾随前行: 也许可以写,但是绝对比代码里拼接难很多,如果代码拼接难度是1,写sql难度是50

会长 4年前

@会长: 如果可以用SQL实现, 和写代码比较起来,哪种效率会高些? 比如当主表数据达到一定量级时实现分页条件查询 。。。

尾随前行 4年前

@尾随前行: 得实验 才知道,说不好

会长 4年前

@会长: 嗯, 我现在是生成了 select a.*,(select value from dt_kuozhanbiao where formid =a.id and name = 'ext_a') as 'ext_a' from dt_zhubiao a 这种SQL语句去了 -:)

尾随前行 4年前

@尾随前行: 这样感觉不好弄啊,因为列数不固定,你这样等于写死了列了

会长 4年前

@会长: 已经解决了 -:)

尾随前行 4年前

@尾随前行: niubi

会长 4年前
< >
分享
最佳答案
0

这个只能有游标拼接动态SQL去执行吧。

收获园豆:20
CaiJuHao | 菜鸟二级 |园豆:352 | 2019-08-01 11:56

嗯嗯 , 已解决了。

尾随前行 | 园豆:0 (初学一级) | 2019-08-02 15:21
其他回答(1)
0
尾随前行 | 园豆:0 (初学一级) | 2019-08-02 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册