0

特定の時間枠内で複数の場所のそれぞれで行われた予定の数を表示しようとしています。を使用して、特定の時間枠内に行われたすべての予定をグループ化できることを知っていGROUP BYます。たとえば、次のようになります。

SELECT AP.start_datetime, AP.Patient_Name, AP.Status, AP.Location

FROM Appointment AP 

WHERE AP.start_datetime >= '2013.09.02 00:00:00.000'
AND AP.start_datetime <= '2013.10.02 23:59:00.000'

GROUP BY AP.Location

これにより、日付範囲内のすべての行が返され、同じ場所で行われたすべての予定がグループ化されます。

ただし、出力を次の形式にしたいと思います。

**Location** | **Appointments**
Location1    | 123
Location2    | 412
Location3    | 341
...
LocationN    | 231

COUNT/SUMGROUP BYこれを可能にする正しい組み合わせを見つけるのに苦労しています。私の問題は、どのようにGROUP BY機能するかを完全に理解していないことにあると思います。この投稿者も同じ質問をしていたと思いますが、回答は得られませんでした。

4

3 に答える 3

0

これもうまくいくはずだと思います:

SELECT DISTINCT Location,
       COUNT(*) OVER(PARTITION BY Instrument) as Appointments
FROM Appointment
WHERE start_datetime >= '20130902'
  AND start_datetime <  '20131003'

この方法を使用すると、Aaron Bertand が言及した解析エラーを回避できます。

SELECT DISTINCT start_datetime, 
       Patient_Name, 
       Status, 
       Location,
       COUNT(*) OVER(PARTITION BY Instrument) as Appointments
FROM Appointment
WHERE start_datetime >= '20130902'
  AND start_datetime <  '20131003

解析します。同じ結果が得られるかどうかは、データによって異なります

于 2013-10-02T15:35:49.087 に答える
0
SELECT Location, Count(Location) AS Appointments 
FROM Appointment 
WHERE   start_datetime >= '2013.09.02 00:00:00.000'
        AND start_datetime <= '2013.10.02 23:59:00.000'
Group by Location
ORDER BY Location
于 2013-10-02T15:37:16.947 に答える