我想创建两个交叉表,然后取两者的比率来获得百分比。第一个看起来像这样:
TRANSFORM Count([Deal Data ECM].[Fees (Y/N)]) AS [CountOfFees (Y/N)]
SELECT [Deal Data ECM].[Deal Type]
FROM [Deal Data ECM]
WHERE ((([Deal Data ECM].[Fees (Y/N)])="Y"))
GROUP BY [Deal Data ECM].[Deal Type]
PIVOT [Deal Data ECM].[Deal Region];
并且第二个应该具有相同的一切,除了费用(Y / N)将被设置=“N”。然后我想在每个表中划分相应的值。有没有办法在一个SQL表达式中执行此操作?
编辑:
让我们假设query1和2的结果如下:
Query1
Blue Red
Cat 1 2
Dog 3 4
Query2
Blue Red
Cat 5 10
Dog 15 20
I want Query 3 to result in:
Query3
Blue Red
Cat .5 .5
Dog .5 .5
编辑2:这就是数据的样子。更具体地说,每个查询的结果如下所示:
Region1 Region2 Region3
Dealtype1 some numbers in each of these cells
Dealtype2
Dealtype3
我不确定为什么你需要实际数据,上面的例子会有相同的解决方案(我只想知道语法,使用什么SQL语句等)
解决方案:
TRANSFORM Sum(IIf([Disclosed Fees (Y/N)]="Y",1,0))/Count([Disclosed Fees (Y/N)]) AS percent_fees_disclosed
SELECT [Deal Data ECM].[Deal Type]
FROM [Deal Data ECM]
GROUP BY [Deal Data ECM].[Deal Type]
PIVOT [Deal Data ECM].[Deal Region];
答案 0 :(得分:0)
您可以根据在交易类型上加入的两个交叉表创建第三个查询。
在查询设计窗口中,创建Query1:
TRANSFORM Count([Deal Data ECM].[Fees (Y/N)]) AS [CountOfFees1]
SELECT [Deal Data ECM].[Deal Type]
FROM [Deal Data ECM]
WHERE ((([Deal Data ECM].[Fees (Y/N)])="Y"))
GROUP BY [Deal Data ECM].[Deal Type]
PIVOT [Deal Data ECM].[Deal Region];
接下来,创建Query2:
TRANSFORM Count([Deal Data ECM].[Fees (Y/N)]) AS [CountOfFees2]
SELECT [Deal Data ECM].[Deal Type]
FROM [Deal Data ECM]
WHERE ((([Deal Data ECM].[Fees (Y/N)])="N"))
GROUP BY [Deal Data ECM].[Deal Type]
PIVOT [Deal Data ECM].[Deal Region];
最后,创建Query3:
SELECT Query1.[DealRegion1], Query2.[DealRegion1],
Query2.[DealRegion2], Query1.[DealRegion2]
FROM Query1
INNER JOIN Query2
ON Query1.[Deal Type] = Query2.[Deal Type];
您可以将字段从一个表或查询拖到下一个以创建连接。 INNER JOIN仅包含两个字段匹配的记录。
更多信息:
Fundamentals of Relational Database Design, Paul Litwin, 2003
Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000