标题:在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和 ...
只看楼主
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
结帖率:0
已结贴  问题点数:20 回复次数:14 
在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和六个月出现8次的病人输出到单独的两个表格中。求算法
在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和六个月出现8次的病人输出到单独的两个表格中。求算法!!!!
搜索更多相关主题的帖子: server 10000 
2012-06-04 19:08
shangxisen
Rank: 2
等 级:论坛游民
帖 子:29
专家分:46
注 册:2010-3-20
得分:7 
程序代码:
create table JZJL
(
JZ_TIME  DATETIME,---就诊时间
JZ_NAME VARCHAR(20)---病人名称
)

INSERT INTO JZJL VALUES('20110101','A')
INSERT INTO JZJL VALUES('20110201','A')
INSERT INTO JZJL VALUES('20110101','A')
INSERT INTO JZJL VALUES('20110101','A')
INSERT INTO JZJL VALUES('20110101','A')
INSERT INTO JZJL VALUES('20110101','A')
INSERT INTO JZJL VALUES('20110501','B')
INSERT INTO JZJL VALUES('20110601','B')
INSERT INTO JZJL VALUES('20110601','B')
INSERT INTO JZJL VALUES('20110601','B')
INSERT INTO JZJL VALUES('20110601','B')
INSERT INTO JZJL VALUES('20110601','B')
INSERT INTO JZJL VALUES('20110601','A')
INSERT INTO JZJL VALUES('20110601','A')




 /*两个月出现6次*/

 SELECT T.JZ_NAME FROM

 (SELECT MAX(JZ_TIME) MINTIME,MIN(JZ_TIME) MAXTIME,JZ_NAME FROM JZJL

 WHERE JZ_NAME IN (SELECT JZ_NAME FROM JZJL GROUP BY JZ_NAME HAVING COUNT(1)=6)

 GROUP BY JZ_NAME)T  WHERE DATEDIFF(MONTH,T.MINTIME,T.MAXTIME)<2


 /*6个月出现8次*/
  SELECT T.JZ_NAME FROM

 (SELECT MAX(JZ_TIME) MINTIME,MIN(JZ_TIME) MAXTIME,JZ_NAME FROM JZJL

 WHERE JZ_NAME IN (SELECT JZ_NAME FROM JZJL GROUP BY JZ_NAME HAVING COUNT(1)=8)

 GROUP BY JZ_NAME)T  WHERE DATEDIFF(MONTH,T.MINTIME,T.MAXTIME)<6
楼主看看对你有没有帮助
2012-06-05 00:11
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 2楼 shangxisen
太有用了,十分感谢!
2012-06-05 17:51
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 2楼 shangxisen
继续求助。。我将您的CODE套入我的数据库中,但是关于时间还是有问题,第一个选出来的有不是两个月内的。请帮我看看是否是我没有套用正确。谢谢!

我的数据是从CSV文件中导入的,一共是1W条
NI是病人编号,
TreatmentID是诊断编号,
AdmissionDate是就诊日期

程序代码:
create database PatientAdmissions
go

use PatientAdmissions
create table PatientAdmissionsData
(TreatmentID  int NOT NULL PRIMARY KEY
, NI int not null
, Gender varchar(1) not null
, AdmissionDate date not null
, AdmissionType VARCHAR(20) NOT NULL
, Treatment varchar(20) not null
)

BULK INSERT PatientAdmissionsData
FROM 'C:\Users\20021939\Desktop\04062012\PatientAdmissionsData10k.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

alter table PatientAdmissionsData add Flag int 

select * from PatientAdmissionsData


/*2个月出现6次以及以上*/
SELECT NI FROM
(SELECT MAX(AdmissionDate) MINTIME,MIN(AdmissionDate) MAXTIME,NI FROM PatientAdmissionsData
WHERE NI IN (SELECT NI FROM PatientAdmissionsData GROUP BY NI HAVING COUNT(1)>=6)
GROUP BY NI)T  WHERE DATEDIFF(MONTH,T.MINTIME,T.MAXTIME)<2

/*6个月出现8次以及以上*/
  SELECT NI FROM
(SELECT MAX(AdmissionDate) MINTIME,MIN(AdmissionDate) MAXTIME,NI FROM PatientAdmissionsData
WHERE NI IN (SELECT NI FROM PatientAdmissionsData GROUP BY NI HAVING COUNT(1)>=8)
GROUP BY NI)T  WHERE DATEDIFF(MONTH,T.MINTIME,T.MAXTIME)<6

SELECT AdmissionDate FROM PatientAdmissionsData
WHERE NI= 18


令:我自己研究了下,您的这个CODE是否是默认从每个病人第一次就诊开始算两月内是否来了6次? 如果是,那任意两月的时间CODE应该怎样写??谢谢!

[ 本帖最后由 gaointer 于 2012-6-5 20:41 编辑 ]
2012-06-05 19:51
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:7 
这个似乎没有那么简单

★★★★★为人民服务★★★★★
2012-06-05 21:17
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 5楼 cnfarer
呵呵,是版主大大,能否给点提示?很急啊!!
2012-06-05 21:29
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
得分:7 
如果病人1月份来了2次5月份来了4次, 算符合条件么?
2012-06-05 23:01
shangxisen
Rank: 2
等 级:论坛游民
帖 子:29
专家分:46
注 册:2010-3-20
得分:0 
回复 4楼 gaointer
您说的任意两个月是指在表中的日期范围内,任意指定两个月的时间?
在SQL中传递两个参数(开始月份,结束月份)么?
2012-06-06 00:06
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 8楼 shangxisen
我不是很清楚您是什么意思,但是要求是,任意两个月里,病人就诊次数有并且超过6次的。例入9月15-11月15病人甲来过6次或以上,这个就算。谢谢!

[ 本帖最后由 gaointer 于 2012-6-6 05:16 编辑 ]
2012-06-06 05:07
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 7楼 png
谢谢您的回复!这个不算,是在任意两个月内来六次。是从一个病人某一次就诊开始算,未来两个月中是否能有6次或以上。

[ 本帖最后由 gaointer 于 2012-6-6 05:18 编辑 ]
2012-06-06 05:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-370793-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024578 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved