【发布时间】:2013-12-23 17:00:04
【问题描述】:
我的表格中的数据如下所示:
VISIT ID | Surgeon | Surgeon Arrival Before Schedule in Minutes | ...
123 | Dr. A | -45
156 | Dr. A | -25
198 | Dr. A | 32
... | ...
我想构建一个可以分箱和计数的查询,这意味着我想要如下输出:
Surgeon | Bin 1 | Bin 2 | Bin 3 | ... | Bin 6
Dr. A | 2 | 0 | 4 | ... | 0
上面,Bin(s) 的定义是 Surgeon Arrival Before Schedule in Minutes 列落入具有以下逻辑的 bin 中:
Bin 1 = Surgeon Arrival Before Schedule in Minutes <= -30
Bin 2 = -30 < Surgeon Arrival Before Schedule in Minutes <= -15
Bin 3 = -15 < Surgeon Arrival Before Schedule in Minutes <= 0
Bin 4 = 0 < Surgeon Arrival Before Schedule in Minutes <= 15
Bin 5 = 15 < Surgeon Arrival Before Schedule in Minutes <= 30
Bin 6 = Surgeon Arrival Before Schedule in Minutes > 30
我想COUNT 有多少 Encounter ID 数字落入每个 bin 以产生所需的结果。
我一直在尝试以下查询:
TRANSFORM Count([or on time log].[ENCOUNTER ID]) AS CountOfID
SELECT [or on time log].[Surgeon]
FROM [or on time log]
GROUP BY [or on time log].[Surgeon]
PIVOT IIf([Surgeon Arrival Before Schedule in Minutes] <= -30, "Bin 1",
IIf(-30 < [Surgeon Arrival Before Schedule in Minutes] <= -15, "Bin 2",
IIf(-15 < [Surgeon Arrival Before Schedule in Minutes] <=0, "Bin 3",
IIf(0 < [Surgeon Arrival Before Schedule in Minutes] <=15, "Bin 4",
IIf(15 < [Surgeon Arrival Before Schedule in Minutes] <= 30, "Bin 5",
IIf(30 < [Surgeon Arrival Before Schedule in Minutes], "Bin 6")
)
)
)
)
)
;
这样做只会给我垃圾箱 1 和 3 Surgeon,这是不准确的。
【问题讨论】:
-
这本质上是一个 PIVOT/CROSSTAB 查询:office.microsoft.com/en-ca/access-help/… 您需要将您的 bin 逻辑转换为 sql 等效项。
-
我已经更新了我的问题,以反映基于您提供的链接的 sql 重写,谢谢,它确实有很大帮助。
-
我没有 sql2012 来测试这个,但
a < b <= c在 2008 年是一个完全的语法错误。 -
感谢您的帮助@MarcB
标签: sql ms-access count ms-access-2007 iif