首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大家帮小弟我看看这个查询如何写

2013-02-25 
大家帮我看看这个查询怎么写?CREATE TABLE TJ(GRBM INT NOT NULL,--个人编码RYRQ DATETIME NOT NULL, --入

大家帮我看看这个查询怎么写?



CREATE TABLE TJ
(GRBM INT NOT NULL,     --个人编码
RYRQ DATETIME NOT NULL, --入院日期
CYRQ DATETIME NOT NULL) --出院日期


INSERT INTO TJ
SELECT 1001,'2012-01-01 22:10:50','2012-02-01 10:12:56' UNION ALL          
SELECT 1002,'2012-01-10 20:11:11','2012-02-10 12:00:00' UNION ALL
SELECT 1003,'2012-01-12 20:11:11','2012-02-15 12:00:00' UNION ALL
SELECT 1001,'2012-02-06 20:11:11','2012-03-20 12:00:00' UNION ALL
SELECT 1002,'2012-02-20 20:11:11','2012-03-09 12:00:00'
GO

/*
问题:
需要统计2月份出院后,1-7天内再次入院的病人,7-15天再次入院的病人

结果:
1-7天内再次入院的病人:1001
7-15天内再次入院的病人:1002
*/


请问下这个查询怎么写?
[解决办法]
select grbm from tj t1 where month(cyrq)=2 and exists(select 1 from tj t2 where t1.grbm=t2.grbm and datediff(day,t1.cyrq,t2.ryrq) between 5 and 7)

[解决办法]
引用:
select grbm from tj t1 where month(cyrq)=2 and exists(select 1 from tj t2 where t1.grbm=t2.grbm and datediff(day,t1.cyrq,t2.ryrq) between 5 and 7)
 UP
[解决办法]
with cy as
(
select GRBM, cyrq from TJ
)
, ry as
(
select GRBM, ryrq from TJ
)
select *, '1-7天内再次入院的病人'  from cy
inner join ry on cy.GRBM = ry.GRBM
where CYRQ >= '2012.02.01' 
and  CYRQ <= '2012.03.01'
and RYRQ <= DATEADD(DAY,7,CYRQ)
and RYRQ > CYRQ
union
select *, '7-15天内再次入院的病人' from cy
inner join ry on cy.GRBM = ry.GRBM
where CYRQ >= '2012.02.01' 
and  CYRQ <= '2012.03.01'
and RYRQ <= DATEADD(DAY,15,CYRQ)
and RYRQ > DATEADD(DAY,7,CYRQ)
[解决办法]
select a.grbm,case when datediff(dd,b.cyrq,a.ryrq) between 1 and 7 then 1 else 0 end as [1-7天内再次入院的病人]
,case when datediff(dd,b.cyrq,a.ryrq) between 8 and 15 then 1 else 0 end as [7-15天内再次入院的病人]
from (select * from #t where ryrq>'2012-02-01') a,
(select * from #t where cyrq>'2012-02-01' and cyrq<'2012-03-01')b
where a.grbm=b.grbm 

热点排行
Bad Request.