1

次のようなテーブルにデータがあります。

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

Surgeon Arrival Before Schedule in Minutes上記では、次のロジックを使用して、列がビンに分類されるビンが定義されています。

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

次のようなクエリを試しています。

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 しか得られません。

4

2 に答える 2

2

最初のステップとして、到着ごとにビン番号を割り当てます。

これは私が使用したサンプルテーブルです。

VISIT_ID Surgeon Arrival
     123 Dr. A       -45
     156 Dr. A       -25
     198 Dr. A        32

以下のクエリでは、Switch 式を使用してビン番号を割り当て、この結果セットを取得しています。

VISIT_ID Surgeon Arrival bin_number
     123 Dr. A       -45          1
     156 Dr. A       -25          2
     198 Dr. A        32          6

SELECT
    o.VISIT_ID,
    o.Surgeon,
    o.Arrival,
    Switch
        (
            o.Arrival <= -30, 1,
            o.Arrival <= -15, 2,
            o.Arrival <=   0, 3,
            o.Arrival <=  15, 4,
            o.Arrival <=  30, 5,
            o.Arrival >   30, 6,
        ) AS bin_number
FROM OR_on_time_log AS o;

PIVOTこれに基づいて、各外科医のビン カウントを返すことができます。

于 2013-12-23T19:43:00.180 に答える
0

こちらのリンクで説明されているように、これについては少し異なる方法で行っています。

コードは次のようになります。

SELECT [or on time log].Surgeon
, sum(iif([or on time log].[surgeon arrival before schedule in minutes] < -30,1,0)) 
  as Bin1
, sum(iif([or on time log].[surgeon arrival before schedule in minutes] > -30 
    and [or on time log].[surgeon arrival before schedule in minutes] <= -15,1,0)) 
  as Bin2
, sum(iif([or on time log].[surgeon arrival before schedule in minutes] > -15 
    and [or on time log].[surgeon arrival before schedule in minutes] <= -0,1,0)) 
  as Bin3
, ...
FROM [or on time log]
group by [or on time log].surgeon
于 2013-12-23T19:39:11.963 に答える