MS Access SQL-聚合计数和2个示例表
我有一种情况,需要从MS Access中的2表进行查询。 我不熟悉这种SQL访问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 ==============
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。