以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 转置表格时,如何对列进行排序 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189741) |
-- 作者:lur320 -- 发布时间:2023/12/22 14:02:00 -- 转置表格时,如何对列进行排序 如附件,源数据有一列是代表列位置的数据, 原本是通过sql addnew逐一添加的行,所以测试项是行倒序 所以通过转置后,发现是列是倒序,问如何按照源数据的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编号,排在最右边。 |
-- 作者:有点蓝 -- 发布时间: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 检验单号,批号
|
-- 作者:lur320 -- 发布时间:2023/12/22 14:08:00 -- 是指MAX这段的先后顺序吗? |
-- 作者: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数据表") |