如图,纵向的字符类表格如何用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 检验单号
---------------------------
正确的结果应该是怎么样的?手工填写一份对比一下看看
就以3楼图片的10个检验单号为例,导出这10个单的原始数据发过来测试一下。同时把3楼的表格也发上来
[此贴子已经被作者于2023/12/22 9:16:42编辑过]
有两页excel,第一页是源数据,第二页是想要展现的报告。
我在网上找个这个方法,但是foxtable报错:
Slect group_concat(distinct concat('max(if(测试项="',测试项,'",结论,null)) as "',测试项,'"')) from {QC数据} where 批号 in ('231115301','231115302','231115303')
不存在group_concat 聚合函数。
access
Se
lect 检验单号,批号,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 检验单号,批号
还有一个问题,转移字符不起作用,因为有些列带符号,怎么解决?
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 检验单号
OK了,只要加单引号就可以了
as \" 总杂(除杂质B外)≤2.0% \" 改为 as ‘总杂(除杂质B外)≤2.0%‘