Ⅰ 一張住院表內,怎麼求每個人不同次住院的住院間隔!用sql語句(如圖 ,假設左邊有一列為姓名)
題主這個需求最好是在程序端,用編程的辦法或使用報表報表工具來解決。用SQL解決代碼實現的編寫難度很大。
下面是使用SQL語言查出每個病人當次住院日期與上次住院日期之間的間隔。請參考下列實驗:
首先創建數據數據表並插入數據
createtable病人(idintidentityprimarykey,
病人IDvarchar(10)uniquenotnull,
姓名nvarchar(10)notnull);
createtable住院記錄(住院idintidentityprimarykey,
病人IDvarchar(10)notnull
foreignkeyreferences病人(病人ID),
住院日期datetimenotnull,
出院日期datetime);
Ⅱ 求:sql中解決一個表中所有兩個日期之間所有天數的語句
--從開始日期到結束日期,每天一條記錄,你的馮賀截止日期是2013/6/8吧,我的是mssql
CreateTableT
(
住院號varchar(10),
姓名varchar(10),
開始日期datetime,
結束日期datetime
)
insertintoTvalues('185316','楊浩','2013/1/10','2013/1/12')
insertintoTvalues('192405','張鑫','2013/3/3','2013/3/4')
insertintoTvalues('203385','馮賀','2013/6/3','2013/6/8')
--遞歸查詢
WithTT
As
(
Select住院號,姓名,開始日期,結束日期,開始日期As日期fromT
unionall
Select住院號,姓名,開始日期,結束日期,dateadd(day,1,日期)FromTT
Wheredateadd(day,1,日期)<=結束日期
)
Select*FromTT
OrderBy住院號,日期
--這個也可以
Selectt.*,DATEADD(DD,number,開始日期)As日期
FromtCrossJoinmaster.dbo.spt_valuesb
WhereType='P'andDATEADD(DD,number,開始日期)<=結束日期