大家帮我看看这个查询怎么写?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)
[解决办法] 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