【发布时间】:2012-01-11 17:33:14
【问题描述】:
我想创建两个交叉表,然后将两者的比率取一个百分比。第一个看起来像这样:
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];
【问题讨论】:
-
让我们不要想象任何这样的事情。这不是交叉表的结果。如果您无法使用查询设计窗口解决此问题并且不希望提供实际样本数据,请创建一个虚拟表和两个交叉表并粘贴其中的结果。
-
您忽略了重点,包含 cat, dog 的列是什么?您需要加入此列,因此上面的评论。
-
此外,如果您使用查询设计窗口和两个简单的交叉表,您将了解更多关于整个事情如何工作的信息,如下所述。
-
见上面的编辑。我不在设计视图中这样做的原因是因为最终我希望它是自动化的(我不想让 3 个单独的查询弄乱我的查询),所以我想让所有这些查询的 SQL 都下来。我认为您在设计视图中一次只能执行一个查询。
-
好的。我无法解释。您必须将查询 1 与列上的查询 2 连接起来。您不能将交叉表作为子查询,但您可以使用两个交叉表查询来创建第三个查询,以连接公共列上的两个交叉表查询。虽然您可以在 VBA 中创建这些查询,但您必须创建至少两个查询,即使用 createqdf。我经常这样做,我发现创建三个查询很有用,继续...
标签: sql ms-access count crosstab