これは、あなたが、ときphysician
の変更を決定するためにlag()
ウィンドウ関数を使用し、その値を割り当て、そのような別のウィンドウ関数でそれを合計することができ2012+ dense_rank()
を使用しますが、SQL Serverでされていません。
select date, physician, action
, change = sum(change) over (order by date, physician desc)
from (
select *
, change = case when physician = lag(t.physician) over (order by t.date, t.physician desc) then 0 else 1 end
from t
) s
rextesterデモ:http://rextester.com/MQDS34484
リターン:
+------------+-----------+--------+--------+
| date | physician | action | change |
+------------+-----------+--------+--------+
| 2016-01-01 | Dr.John | Visit | 1 |
| 2016-01-01 | Dr.John | Call | 1 |
| 2016-01-02 | Dr.John | Call | 1 |
| 2016-01-03 | Dr.Jane | Call | 2 |
| 2016-01-04 | Dr.Jane | Call | 2 |
| 2016-01-05 | Dr.Jane | Visit | 2 |
| 2016-01-06 | Dr.John | NoCall | 3 |
| 2016-01-07 | Dr.John | NoCall | 3 |
| 2016-01-08 | Dr.John | Visit | 3 |
| 2016-01-08 | Dr.Jane | Call | 4 |
| 2016-01-08 | Dr.Jane | Visit | 4 |
| 2016-01-09 | Dr.John | Visit | 5 |
| 2016-01-09 | Dr.Jane | Call | 6 |
| 2016-01-09 | Dr.Jane | Visit | 6 |
+------------+-----------+--------+--------+
拡大サンプルダ別の医師との別の日のために。
ランキングの基準は?医者の名前とその後の行動など、 – JRG
日付と医者のみ。行動はランキングにとって重要ではありません。 – KOMAEI
「2016-01-02 Dr.John Call 1」の行の日付が異なると、そのランクが1になるのはなぜですか?それはタイプミスですか? – BJones