Foxtable(狐表)用户栏目专家坐堂 → 字符类表格如何转置?


  共有2092人关注过本帖树形打印复制链接

主题:字符类表格如何转置?

帅哥,在线噢!
lur320
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
字符类表格如何转置?  发帖心情 Post By:2023/12/22 8:49:00 [只看该作者]

 如图,纵向的字符类表格如何用sql命令横向展开?

图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看

我使用了下面的sql 命令,展开后有很多空格,什么是准确的命令?

图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

---------------------------
Selct 检验单号,Case When 测试项 = '报告日期' Then 结论 Else null End, Case When 测试项 = '大肠埃希菌' Then 结论 Else null End,xxxxxxxxxxxxx From {QC数据} where 批号 in ('231111001','231111002') group by 检验单号
---------------------------


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110624 积分:563022 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/22 8:54:00 [只看该作者]

正确的结果应该是怎么样的?手工填写一份对比一下看看

 回到顶部
帅哥,在线噢!
lur320
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2023/12/22 8:58:00 [只看该作者]

 正确的应该是这样:相当于去掉了所有的空格。

图片点击可在新窗口打开查看此主题相关图片如下:捕获23.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110624 积分:563022 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/22 9:15:00 [只看该作者]

就以3楼图片的10个检验单号为例,导出这10个单的原始数据发过来测试一下。同时把3楼的表格也发上来
[此贴子已经被作者于2023/12/22 9:16:42编辑过]

 回到顶部
帅哥,在线噢!
lur320
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2023/12/22 10:15:00 [只看该作者]

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:12.xls
有两页excel,第一页是源数据,第二页是想要展现的报告。

 回到顶部
帅哥,在线噢!
lur320
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2023/12/22 10:40:00 [只看该作者]

 我在网上找个这个方法,但是foxtable报错:
Slect group_concat(distinct concat('max(if(测试项="',测试项,'",结论,null)) as "',测试项,'"')) from {QC数据} where 批号 in ('231115301','231115302','231115303')

不存在group_concat 聚合函数。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110624 积分:563022 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/22 11:16:00 [只看该作者]

access

Select 检验单号,批号,max(iif(测试项 = '大肠埃希菌',结论,NULL)) As 大肠埃希菌,max(iif(测试项 = '霉菌酵母菌',结论,NULL)) As 霉菌酵母菌,max(iif(测试项 = '需氧菌',结论,NULL)) As 需氧菌,max(iif(测试项 = '含量',结论,NULL)) As 含量  From {原数据} Group by 检验单号,批号

SqlServer

Select 检验单号,批号,max(Case When 测试项 = '大肠埃希菌' Then 结论 Else NULL End) As 大肠埃希菌,max(Case When 测试项 = '霉菌酵母菌' Then 结论 Else NULL End) As 霉菌酵母菌,max(Case When 测试项 = '需氧菌' Then 结论 Else NULL End) As 需氧菌,max(Case When 测试项 = '含量' Then 结论 Else NULL End) As 含量 From {学生成绩} Group by 检验单号,批号

 回到顶部
帅哥,在线噢!
lur320
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2023/12/22 13:23:00 [只看该作者]

 还有一个问题,转移字符不起作用,因为有些列带符号,怎么解决?

Slect 检验单号,max(Case When 测试项 = '报告日期' Then 结论 Else null End) as \" 报告日期 \", max(Case When 测试项 = '大肠埃希菌' Then 结论 Else null End) as \" 大肠埃希菌 \", max(Case When 测试项 = '含量' Then 结论 Else null End) as \" 含量 \", max(Case When 测试项 = '总杂(除杂质B外)≤2.0%' Then 结论 Else null End) as \" 总杂(除杂质B外)≤2.0% \" From {QC数据} where 批号 in ('221114403') group by 检验单号

 回到顶部
帅哥,在线噢!
lur320
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2023/12/22 13:32:00 [只看该作者]

 OK了,只要加单引号就可以了
as \" 总杂(除杂质B外)≤2.0% \" 改为 as ‘总杂(除杂质B外)≤2.0%‘

 回到顶部