❶ 如何用sql语句查询宿舍可用床位
方法是:
1、用户登录界面学生通过用户名和密码获取登录权限,宿舍楼管理员通过用户名和密码获取登录权限。
2、学生用户界面本宿舍楼的学生就能查询其所在的宿舍床位号。
❷ sql统计一个月医院床位的使用率。
8. 病床使用率
含义:表示病床的使用效果。
公式:实际占用总床日 / 实际开放总床日 * 100%
说明:该指标越高反映病床利用率高。
❸ sql中如何统计每一天同一医院的住院病人
SELECT DAY,网点名称,C.RS FROM (
SELECT convert (varchar(12),DATEADD(DAY,number,搜索开始时间),23) AS DAY
FROM master.dbo.spt_values
WHERE type = 'P'
AND number<=DATEDIFF(day,搜索开始时间,搜索结束时间))AS A
CROSS apply
(select 网点名称,COUNT(姓名)AS RS from 表 AS B
WHERE A.DAY BETWEEN B.入院登记时间 AND B.出院登记时间
GROUP BY 网点名称)C
❹ 求助 sql server分组统计问题
你是来搞笑的么。。。。。
两个语句中最后面的一个左连是费的。
上面的语句用he.idISNOTNULL做where条件,又用he.id排序。但是he.id本来就等于h.ORDERED_DOCTOR_ID
hrm_employee这个员工表属于基础信息,正常价格是不带delete功能的。所以根本没必要存在。这个连表。
然后就是解决你上面会上面和下面两个SQL不一致的问题了
问题出现再你h和d两个联表上。从你第一段SQL看出,S_ZYFYLB_DM是复数存在的,也就是有笛卡儿积。然而你“参与列数”字段居然加了 distinct 这个关键字。
distinct是全部列数数据相同才会触发唯一机制。所以你第一个SQL的distinct触发无效。
第二个SQL只有COUNT统计,肯定能触发distinct了。
所以就变成总行数有差异了。
❺ SQL语句就诊重复人次查询,请教各位大师。
把保号(grbh)和时间也加入group by ,就可以实现相同参保号(grbh)同一天在同一家医疗机构(yymc)(,jgmc)就诊的人次数。不知道我理解的对不对。
select grbh,convert(varchar(10),bxrq,120),yymc as '医疗机构',jgmc as '机构代码',count(grbh) as '人次数'
from nb_yyzd【医院字典】,nb_bxjl【报销记录表】,nb_bxjl2【报销记录表2】
where yybh=jgmc【医院字典的医院编号=报销记录表2的机构代码】
and bxlx=1【报销类型】
and bxfs=2【报销方式】
and glzf is null【作废记录的删除条件】
and bxrq>='2013-01-01'【开始查询时间】
and bxrq<'2013-08-01'【终止查询时间】
and nb_bxjl2.bxid=nb_bxjl.bxid【报销记录表与报销记录表2的bxid(报销ID)相关联】
and grbh in (select grbh from nb_bxjl group by grbh,CONVERT( CHAR(20),bxrq, 111 ) having count(grbh)>1)
group by grbh,yymc,jgmc,convert(varchar(10),bxrq,120)
❻ 请用sql2005帮做一个数据库表(比较简单的)100分,做的好可以追加的,谢谢.
你要建表吗????
病人(住院号,姓名,性别,地址,病房编号,床位号,入院日期,出院日期)
医生(医生工号,姓名,职称)
护士(护士工号,姓名,职称,手术室编号)
病床(病床编号,床位号,类型,空床标志,护士工号)
手术室(手术室编号,类型)
手术(手术标识号,类型,日期,时间,费用,手术室编号,医生工号,住院号)
诊断书(诊断书编号,科别,诊断,医生工号,住院号)
收据(收据编号,项目,金额,收款员,日期,住院号)
协助(手术标识号,医生工号,角色)
处方(处方单号,序号,药品名称,规格,数量,费用,住院号,医生工号)
这不都有了关系了吗?你直接建立就行,至于字段类型,主键,外键你可以自己设置一下啊
❼ sql统计医院一段时间床位的使用率。
如果是ORACLE的,我会写。
select b.tdate, nvl(a.inqty,0) as inqty
from
(select count(1) as inqty, trunc(入院日期) as tdate
from table
group by trunc(入院日期)) a,
(select to_date('2011-03-01','YYYY-MM-DD') + rownum - 1 as tdate
from all_objects
where rownum <= (to_date('2011-03-05','YYYY-MM-DD') - to_date('2011-03-01','YYYY-MM-DD') + 1) ) b
where b.tdate = a.tdate(+)
order by b.tdate
以上语法,a表是根据日期分组,取每天入院的人数,但是,这个日期是不连续的,而b表是构建一个时间段的连续日期,这样把b表和a表做一个外连接,就可以得到这个连续时间段每天入院的人数了。
如果是SQLSERVER等数据库,用的不太多,不清楚b表该怎么构建。2005以上的版本好像有一个row_number() 这个函数,可以利用这个来构造连续的日期。
似乎可以这么写,2005以上版本,不太确定,这个是仿着ORACLE写的,也没有环境检查,语法可能有点错误,不过就是这个意思。
select b.tdate, a.inqty
from
(select count(1) as inqty, 入院日期 as tdate
from table
group by 入院日期) a,
(select dateadd(dd, rownum - 1,convert(datetime,'2011-03-01',121)) as tdate
from (SELECT Row_Number() OVER (partition by id ORDER BY id desc) rownum FROM sysobjects ) all_object
where rownum <= datediff(dd,convert(datetime,'2011-03-15',121),convert(datetime,'2011-03-01',121)) + 1 ) b
where b.tdate = a.tdate(+)
order by tdate