还是SQL查询语句的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:27:44
姓名 发生时间

张新勇 2008-12-1
张新勇 2008-12-1
张新勇 2008-12-1
李国明 2008-12-1
孔磊 2008-12-1
孔磊 2008-12-1
孔磊 2008-12-1
张新勇 2008-12-2
张新勇 2008-12-2
张新勇 2008-12-2

我需要查出来的内容,显示为:
姓名 时间 次数

张新勇 2008-12-1至2008-12-2 2次
李国明 2008-12-1 1次
孔磊 2008-12-1 1次

大家再帮帮哈

附:
select A.病人ID,A.姓名,A.性别,A.年龄,A.发生时间
from 病人费用记录 a,收费项目目录 b
where 发生时间 between to_date ('2008-12-1','yyyy-mm-dd') and to_date ('2008-12-31','yyyy-mm-dd')
and a.收费细目id=b.id
and a.记录状态<>0
and 门诊标志=1
and 开单人='汪、田、任'
group by A.病人ID,A.姓名,A.性别,A.年龄,A.发生时间
表里的数据包括: ID 记录性质 NO 实际票号 记录状态 序号 从属父号 价格父号 多病人单 记帐单ID 病人ID 主页ID 医嘱序号 门诊标志 记帐费用 姓名 性别 年龄 标识号 床号 病人病区ID 病人科室ID 费别 收费类别 收费细目ID 计算单位 付数 发药窗口 数次 加班标志 附加标志 婴儿费 收入项目ID 收据费目 标准单价 应收金额 实收金额 划价人 开单部门ID 开单人 发生时间 登记时间

select 姓名,min(to_char(发生时间,'yyyy-mm-dd'))||'至'||max(to_char(发生时间,'yyyy-mm-dd')) 时间,count(*)||'次' 次数
from 表 group by 姓名;

其他where限制条件按需要加入即可

SELECT 姓名, min(发生时间)||'至'||max(发生时间) AS 时间, COUNT(*) AS 次数
FROM (SELECT * FROM TABLE GROUP BY 姓名, 发生时间 )

select 姓名, 时间 ,count(*) from
group by 姓名, 时间

xxk_l 回答是正确的。

SELECT 姓名, min(发生时间)||'至'||max(发生时间) AS 时间, COUNT(*) AS 次数
FROM (SELECT * FROM TABLE GROUP BY 姓名, 发生时间 )

这个对