【问题标题】:Cross Tab Query in MS AccessMS Access 中的跨表查询
【发布时间】:2016-12-14 10:23:11
【问题描述】:

我必须对我的两个表应用交叉表查询才能获得所需的结果。 (MS-ACCESS)我首先想学习如何在一个简单的表上编写一个交叉表查询,然后再转到更大的表。

表一:

**DATE** |       **NAME**   
-------------------------------------
 13/12/16  |    Sofia    
 13/12/16  |     Sonia  
 13/12/16  |     Jas    
 14/12/16  | Sofia  
 15/12/16  | Sonia

期望的结果:(P = 存在;A = 不存在)

**Name** | **13/12/16** | **14/12/16** | **15/12/16**  
--------------------------------------------------------
Sofia | **P** | **P** | **A**  
Sonia | **P** | **A** | **P**   
Jas   | **P** | **A** | **A**

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    处理交叉表查询的一种方法是使用条件聚合:

    select name,
           max(iif(date = "13/12/16", "P", "A") as [13/12/16],
           max(iif(date = "14/12/16", "P", "A") as [14/12/16],
           max(iif(date = "15/12/16", "P", "A") as [15/12/16]
    from t
    group by name;
    

    我不确定日期在数据中是如何表示的,所以我只是假设它们是字符串。

    【讨论】:

    • 非常感谢。如果说,对于 12 月份,我需要 31 个日期列(无论它们是否存在于第一个表中)加上一个名称列,并且行有名称和“P”或“,我该怎么办? A' 如果该特定日期和名称出现在表 1 中?
    • @SofiaUsman 。 . .只需为您想要的每个日期重复 max() 行。
    • 我们是否忘记了 MS Access SQL 不支持 Case 语句?
    • @Parfait 还有什么选择?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多