返回第一个条目为1且所有后续行为0的结果

use*_*584 0 sql t-sql sql-server sql-server-2008

我正在研究奇怪的SQL查询

 Patient_ID    Count    order_no
 1               1          1
 2               1          2  
 2               0          3
 2               0          4
 3               1          5
 3               0          6
Run Code Online (Sandbox Code Playgroud)

如上所述,我需要对患者进行计数,对于每个新患者,计数列为1.如果重复,则下面的条目应为0

我很困惑应该如何在SQL中使用它

cga*_*ian 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
Run Code Online (Sandbox Code Playgroud)