Ms access 访问:“;交叉表;非数字数据的查询效果

Ms access 访问:“;交叉表;非数字数据的查询效果,ms-access,ms-access-2007,crosstab,Ms Access,Ms Access 2007,Crosstab,我正在使用Access 2007,需要帮助创建查询。如果这是疯狂的长,对不起!我认为细节越多,理解就越好。我不是程序员,我希望有人能帮我 我需要知道如何将非数字数据折叠/汇总/汇总到共享特征/值的单行中。我想要的是类似于交叉表查询的,因为我想要来自不同行的唯一单元格值,这些行沿着共享/公共值的一行旋转/显示在列中。然而,我的数据不是数字,它需要字母列标题,而交叉表禁止 数据: Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_

我正在使用Access 2007,需要帮助创建查询。如果这是疯狂的长,对不起!我认为细节越多,理解就越好。我不是程序员,我希望有人能帮我

我需要知道如何将非数字数据折叠/汇总/汇总到共享特征/值的单行中。我想要的是类似于交叉表查询的,因为我想要来自不同行的唯一单元格值,这些行沿着共享/公共值的一行旋转/显示在列中。然而,我的数据不是数字,它需要字母列标题,而交叉表禁止

数据:

Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_number
SELECT tbl_BadgeType.Badge_code
FROM tbl_BadgeType
GROUP BY tbl_BadgeType.Badge_code
PIVOT tbl_BadgeType.Location_production;
Badge Code     110   200   210  280  320
24             1           1         1
B9             1                1    
C1                   1     1         
Badge Code     Chicago  Indianapolis   Rockford  Peoria  St. Louis
24             Yes      No             Yes       No      Yes
B9             Yes      No             No        Yes     No
C1             No       Yes            Yes       No      No
  • 徽章代码24在三个地点制作:110、210和320(代表芝加哥、罗克福德和圣路易斯)
  • 徽章代码B9在两个位置:110和280(芝加哥和皮奥里亚)
  • 3个位置的徽章代码C1:200和210(印第安纳波利斯和罗克福德)
每个徽章编码位置组合位于单独的一行,共8行。 徽章代码的数量可以/将增加

我尝试过的查询:

Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_number
SELECT tbl_BadgeType.Badge_code
FROM tbl_BadgeType
GROUP BY tbl_BadgeType.Badge_code
PIVOT tbl_BadgeType.Location_production;
Badge Code     110   200   210  280  320
24             1           1         1
B9             1                1    
C1                   1     1         
Badge Code     Chicago  Indianapolis   Rockford  Peoria  St. Louis
24             Yes      No             Yes       No      Yes
B9             Yes      No             No        Yes     No
C1             No       Yes            Yes       No      No
Badge_type_number是用于标识每个Badge code位置使用组合的主键

结果:

Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_number
SELECT tbl_BadgeType.Badge_code
FROM tbl_BadgeType
GROUP BY tbl_BadgeType.Badge_code
PIVOT tbl_BadgeType.Location_production;
Badge Code     110   200   210  280  320
24             1           1         1
B9             1                1    
C1                   1     1         
Badge Code     Chicago  Indianapolis   Rockford  Peoria  St. Louis
24             Yes      No             Yes       No      Yes
B9             Yes      No             No        Yes     No
C1             No       Yes            Yes       No      No
列标题是数字的,不能在交叉表中更改为位置名称,我想要“是”而不是“1”。(很明显,它们是1,因为它是交叉表中的一个计数函数,我真的不需要它…)

所需结果:

Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_number
SELECT tbl_BadgeType.Badge_code
FROM tbl_BadgeType
GROUP BY tbl_BadgeType.Badge_code
PIVOT tbl_BadgeType.Location_production;
Badge Code     110   200   210  280  320
24             1           1         1
B9             1                1    
C1                   1     1         
Badge Code     Chicago  Indianapolis   Rockford  Peoria  St. Louis
24             Yes      No             Yes       No      Yes
B9             Yes      No             No        Yes     No
C1             No       Yes            Yes       No      No
问题/问题:

Count(tbl_BadgeType.Badge_type_number) AS CountOfBadge_type_number
SELECT tbl_BadgeType.Badge_code
FROM tbl_BadgeType
GROUP BY tbl_BadgeType.Badge_code
PIVOT tbl_BadgeType.Location_production;
Badge Code     110   200   210  280  320
24             1           1         1
B9             1                1    
C1                   1     1         
Badge Code     Chicago  Indianapolis   Rockford  Peoria  St. Louis
24             Yes      No             Yes       No      Yes
B9             Yes      No             No        Yes     No
C1             No       Yes            Yes       No      No
  • 严格意义上的交叉表查询并不是我所需要的,但我不知道如何模拟它的“上卷”效果。这是6页模糊和1页有用清晰之间的区别
  • 如果交叉表是要做的事情,那么我不知道如何将“1”值显示为“是”。我曾在其他查询和报告中使用IIF语句将1/0值“转换”为“是/否”,但无法确定在该查询或其报告中放置IIF的位置

  • 这有意义吗?我要求太多了吗?我还有希望吗?:^)

    好的,我可以建议一些部分解决方案(根据您的表的外观,可能会产生更干净的解决方案),以等待对我上面留下的评论的回应:

    问题#1:从数字到文本

    如果您有一个表可以将[Location_production]与字符串(如“Chicago”)匹配,则只需使用一个内部联接即可使“110”显示为“Chicago”。您尝试的查询的第三行将变成如下内容:

    FROM tbl_BadgeType AS T INNER JOIN tbl_Locations AS L ON T.Location_production = L.ID 
    
    然后,您只需在L.LocationName或任何实际文本上进行交叉表

    问题#2:“1”到“是”

    一般来说,您可以交换一个vb iif表达式,将“1”改为“是”


    您需要将查询顶行中的“Count()”更改为“Max()”或“Min()”,可能还需要进行其他更改,具体取决于数据的外观。

    好的,因此在等待对我上面留下的注释的响应时,我可以建议一些部分解决方案(可能会产生更干净的解决方案,具体取决于您的表的外观):

    问题#1:从数字到文本

    如果您有一个表可以将[Location_production]与字符串(如“Chicago”)匹配,则只需使用一个内部联接即可使“110”显示为“Chicago”。您尝试的查询的第三行将变成如下内容:

    FROM tbl_BadgeType AS T INNER JOIN tbl_Locations AS L ON T.Location_production = L.ID 
    
    然后,您只需在L.LocationName或任何实际文本上进行交叉表

    问题#2:“1”到“是”

    一般来说,您可以交换一个vb iif表达式,将“1”改为“是”


    您需要将查询顶行中的“Count()”更改为“Max()”或“Min()”,可能还需要进行其他更改,具体取决于数据的外观。

    Wow!我没想到这么快就能得到答复

    以下是tbl_类型相关字段的结构和示例数据:

    Badge_code     Badge_description(both are Text fields)
    01             Faculty/staff
    04             College of Law
    62             Student-Peoria
    86             Visitor
    B7             Police 
    
    实际使用徽章代码的位置在tbl_TokenInstance(每个令牌实例的一行——徽章、ID等)中。徽章代码可由不同的位置使用;它们不是唯一的。相关数据为:

      Instance_number(autonumber)  Prod_site_num(Integer)   Badge_code(text)
       1                            110                      B7
       3                            110                      B7
       4                            110                      B7
       27                           310                      04
       15                           210                      62
       21                           110                      62
       16                           110                      01
       22                           210                      01
       25                           310                      01
       31                           110                      86
       32                           120                      86
    
    最后,生产站点编号和说明的来源列表位于列表\生产站点:

      Production_site_number        Production_site_description
      110                           Chicago IDC
      120                           Chicago CS
      210                           Springfield IDC
      310                           Champaign IDC
      320                           Champaign CS
    

    哇!我没想到这么快就能得到答案

    以下是tbl_类型相关字段的结构和示例数据:

    Badge_code     Badge_description(both are Text fields)
    01             Faculty/staff
    04             College of Law
    62             Student-Peoria
    86             Visitor
    B7             Police 
    
    实际使用徽章代码的位置在tbl_TokenInstance(每个令牌实例的一行——徽章、ID等)中。徽章代码可由不同的位置使用;它们不是唯一的。相关数据为:

      Instance_number(autonumber)  Prod_site_num(Integer)   Badge_code(text)
       1                            110                      B7
       3                            110                      B7
       4                            110                      B7
       27                           310                      04
       15                           210                      62
       21                           110                      62
       16                           110                      01
       22                           210                      01
       25                           310                      01
       31                           110                      86
       32                           120                      86
    
    最后,生产站点编号和说明的来源列表位于列表\生产站点:

      Production_site_number        Production_site_description
      110                           Chicago IDC
      120                           Chicago CS
      210                           Springfield IDC
      310                           Champaign IDC
      320                           Champaign CS
    

    你可以发布一个tbl_BadgeType的结构示例,以及其中相关数据的简短示例吗?你的问题感觉可以解决,但在不知道源数据的情况下很难提出解决方案。谢谢!还有:是否有另一个表可以加入Badge_代码以获取“Chicago”、“Illinois”等等?你可以发布一个tbl_BadgeType的结构示例,以及其中相关数据的简短示例吗?你的问题感觉可以解决,但在不知道源数据的情况下很难提出解决方案。谢谢!还有:是否有另一个表可以加入Badge_代码以获取“芝加哥”、“伊利诺伊”等?