Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:转置表格时,如何对列进行排序

1楼
lur320 发表于:2023/12/22 14:02:00
 如附件,源数据有一列是代表列位置的数据,
原本是通过sql addnew逐一添加的行,所以测试项是行倒序
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:12.xls


图片点击可在新窗口打开查看

所以通过转置后,发现是列是倒序,问如何按照源数据的ind编号进行排序?
SQL的命令:
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 检验单号,批号

现在的结果:
正确的是 大肠埃希菌 应当按ind编号,排在最右边。
图片点击可在新窗口打开查看

2楼
有点蓝 发表于:2023/12/22 14:06:00
自己调整一下sql的字符

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 检验单号,批号
3楼
lur320 发表于:2023/12/22 14:08:00
 是指MAX这段的先后顺序吗?
4楼
lur320 发表于:2023/12/22 14:11:00
 Ok了,
我在拼接sql的时候,按照ind排序就行。谢谢。

combolis = DataTables("QC数据").SQLGetValues("测试项", "批号 in (" & lis & ")","ind") '得到所选测试项'    
    ae = combolis.ToArray()'测试项加工成串
    Dim t, t1 As String
    For Each tes As String In ae
        t = t & "max(Case When 测试项 = '" & tes & "' Then 结论 Else null End) as '" & tes & "',"
    Next
    t = t.Trim(",")
    t1 = "Se1ect 检验单号," & t & " From {QC数据} where 批号 in (" & lis & ") group by 检验单号"
  
    Dim q As New QueryBuilder
    q.TableName = "QC数据表"
    q.C
    q.SelectString = t1
    q.Build
    MainTable = Tables("QC数据表")
共4 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 3 queries.