标题:在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和 ...
取消只看楼主
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
结帖率:0
已结贴  问题点数:20 回复次数:7 
在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和六个月出现8次的病人输出到单独的两个表格中。求算法
在sql server中,要求在一个10000条医院就诊记录中,将两个月内出现6次的和六个月出现8次的病人输出到单独的两个表格中。求算法!!!!
搜索更多相关主题的帖子: server 10000 
2012-06-04 19:08
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
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 5楼 cnfarer
呵呵,是版主大大,能否给点提示?很急啊!!
2012-06-05 21:29
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
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 11楼 png
谢谢回复。基本上可以这样理解,但有一个问题是连续的两个月有可能是61天,有可能是62天,也有可能是59天
2012-06-07 06:07
gaointer
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-6-4
得分:0 
回复 13楼 png
十分感谢您的回答,今天MS一位高手说是
要设置两个循环了
内循环 计算两个月内出现6次的和六个月出现8次的病人 将符合条件的病人ID插入制定表中
外循环 就是从指定月份开始搜索 循环增加 起始月份+1 直到当前日期的前6个月为止

请求给位高手们给点具体的提示!
2012-06-07 17:29



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




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

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