2016-08-22 12 views
-2

私はMS Accessの2テーブルからクエリを行う必要がある状況があります。 このSQLアクセスは初めてです。MS Access SQL - 集計数2のテーブル例

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  | 
================================================================ 

答えて

1

まず、タイプは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 
+0

ありがとうございました。できます。 – basyirstar

1

このクロス集計クエリは、あなたのタイプとしてだけで食品& Toolkitを持つに依存しない - それはあなたが追加した新しいタイプのカウントされます。

Count(sType)を囲んでを指定すると、0の値が表示されますが、CLNGは確実にテキストではなく数字として扱われます。 Count(sType) AS 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 
+0

お願いします。 javascriptのように 'this'を模倣することが可能なクエリはありますか? メインクエリprimary_keyを参照するサブクエリを実行したいので、 'この'種類の構文が存在しますか? – basyirstar

+0

申し訳ありませんが、私は分かりません。私はJavaScriptを一度も使用していません。 –

関連する問題