MS Access SQL-聚合计数和2个示例表

MS Access SQL-聚合计数和2个示例表,sql,ms-access,aggregate-functions,Sql,Ms Access,Aggregate Functions,我有一种情况,需要从MS Access中的2表进行查询。 我不熟悉这种SQL访问 Table: UserInfo =================== | UserID | Gender | =================== | K01 | M | | K02 | M | | K03 | F | | K04 | M | =================== Table: OrderInfo ==============

我有一种情况,需要从MS Access中的2表进行查询。 我不熟悉这种SQL访问

Table: UserInfo
===================
| UserID | Gender | 
===================
|  K01   |   M    |
|  K02   |   M    |
|  K03   |   F    |
|  K04   |   M    |
===================

Table: OrderInfo
===================================
| OrderID  |  Type    | UserID_FK |
===================================
|   1      |  Food    |    K01    |
|   2      |  Food    |    K01    |
|   3      |  Toolkit |    K02    |
|   4      |  Food    |    K04    |
|   5      |  Toolkit |    K03    |
===================================
问题是: 我想查询结果以生成此表,如何在MS Access中进行查询? 我想我应该做一个子查询,但我不知道怎么做

Table: Summary
================================================================
| UserID | Gender |  CountOfToolkit | CountOfFood | TotalCount |
================================================================
|  K01   |   M    |       0         |      2      |     2      |
|  K02   |   M    |       1         |      0      |     1      |
|  K03   |   F    |       1         |      0      |     1      |
|  K04   |   M    |       0         |      1      |     1      |
================================================================

首先,Type是MS-Access中的保留字。 你应该避免使用保留字。 话虽如此,请尝试以下方法:

SELECT   a.UserID, a.Gender, SUM(IIF(b.[Type] ='Food',1,0))  AS CountOfFood, SUM(IIF(b.[Type] ='Toolkit',1,0)) AS CountOfToolkit, COUNT(*) AS  TotalCount
FROM     UserInfo a INNER JOIN OrderInfo b ON a.UserId = b.UserID_FK
GROUP BY a.UserID, a.Gender

这个交叉表查询不依赖于将Food&Toolkit作为您的类型,它将计算您添加的任何新类型

围绕计数(sType)的
NZ
确保显示0值,而
CLNG
确保仍将其视为数字而不是文本。 您可以只使用
Count(sType)作为CountOfType

TRANSFORM   CLNG(NZ(Count(sType),0)) AS CountOfType
SELECT      UserID
            ,Gender
            ,COUNT(sType) AS TotalCount
FROM        UserInfo LEFT JOIN OrderInfo ON UserInfo.UserID = OrderInfo.UserID_FK
GROUP BY    UserID, Gender
PIVOT       sType

我可以问一下吗。是否有任何查询可以模仿javascript中的
这个
?因为我想做引用主查询主键的子查询,是不是存在这种语法?对不起,我不知道。我从未使用过javascript。