0

私は奇妙なSQLクエリに取り組んでいます

 Patient_ID    Count    order_no
 1               1          1
 2               1          2  
 2               0          3
 2               0          4
 3               1          5
 3               0          6

ここで、上記のように患者を数える必要があります。新しい患者ごとに、count 列は 1 です。繰り返される場合、以下のエントリは 0 になります。

SQLでそれをどのように機能させるべきか混乱しています

4

1 に答える 1

7

最初のエントリを 1 にし、それ以降のエントリをすべて 0 にするためには、順序番号で区切られたランキングが必要だと思います。結果をテストするには、以下の sqlfiddle をチェックアウトしてください。

http://www.sqlfiddle.com/#!3/4e2e2/17/0

SELECT
patient_id
,CASE WHEN r.rank = 1 
 THEN 1
 ELSE 0
 END
, order_number
FROM
(
  SELECT 
  order_number
  ,patient_id
  ,ROW_NUMBER() OVER (PARTITION BY patient_id ORDER BY order_number)[rank] 
  FROM 
  PatientTable
)r
于 2012-06-05T00:38:50.253 に答える