一次选择所有

uza*_*y95 1 sql

我想从下表中选择patient_id和日期差异:

p_id    TreatmentDate
15      2008-05-01
15      2008-05-03
15      2008-05-05
15      2008-05-07
16      2008-05-01
16      2008-05-03
16      2008-05-05
16      2008-05-09
16      2008-05-11
17      2008-05-03
17      2008-05-05
17      2008-05-07
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的结果:

p_id      Day Difference
15        6 Days
16        10 Days
17        4 Days
Run Code Online (Sandbox Code Playgroud)

你有任何可以在sql语句中生成这个结果的报价吗?

Vin*_*vic 8

这应该是一般的

select p_id, max(TreatmentDate) - min(TreatmentDate) from 
patientsTable group by p_id
Run Code Online (Sandbox Code Playgroud)

更具体地说,对于MSSQL Server

select p_id, DATEDIFF(D, MIN(TreatmentDate), MAX(TreatmentDate)) from 
patientsTable group by p_id
Run Code Online (Sandbox Code Playgroud)

  • 正确回答.但在SQL Server中,我会使用DATEDIFF函数:SELECT p_id,[Day Difference] = DATEDIFF(D,MIN(TreatmentDate),MAX(TreatmentDate))FROM PatientsTable GROUP BY p_id (2认同)