问题描述
EncounterTable.PatEnc_ID号(18)
馈送表记录_时间日期
馈送表。值变量2 ( 2500字节)
馈送表.Value_comment Varchar2 ( 255字节)
馈送表.RowTypeID Varchar2 ( 18字节)
供料表Pat_ID号(18)
选择
EncounterTable.PatEnc_ID
,馈送表。记录_时间
从
EncounterTable
Left Outer Join FeedingTable ONEncounterTable.PatEnc_ID = FeedingTable.Pat_ID
在哪里
FeedngTable.RowTypeID='707903'
排序依据
EncounterTable.PatEnc_ID
,馈送表。记录_时间
PatEnc_ID Recorded_Time
1234 2015年8月9日上午6:00:00
1234 2015年8月9日上午8:30:00
1234 2015年8月9日上午9:48:00
1234 2015年8月9日中午12:00:00
1234 2015年8月9日12:15:00 AM
1234 2015年8月9日凌晨3:30:00
1234 2015年8月9日凌晨4:00
1234 2015年8月9日上午4:52:00
1234 2015年8月9日上午5:35:00
1234 2015年8月9日上午10:00:00
6789 2015年8月9日凌晨2:00
6789 2015年8月9日上午5:00:00
6789 2015年8月9日上午7:52:00
6789 2015年8月9日上午11:50:00
6789 2015年8月9日下午1:30:00
6789 2015年8月9日下午2:36:00
6789 2015年8月9日下午3:00
6789 2015年8月9日下午5:50:00
6789 2015年8月9日下午9:00:00
6789 2015年8月10日12:00:00 AM
6789 2015年8月10日凌晨1:00:00
6789 2015年8月10日凌晨2:00
6789 2015年8月10日4:00 AM
6789 2015年8月10日上午5:58:00
6789 2015年8月10日上午7:00:00
6789 2015年8月10日上午8:55:00
6789 2015年8月10日上午10:00:00
6789 2015年8月10日中午12:00:00
使用最优化的查询的所需输出:
PatEnc_ID馈电
1234年8月9日上午6:00:00, 2015年8月9日上午8:30:00, 2015年8月9日上午9:48:00, 2015年8月9日下午12:00:00, 2015年8月9日12:AM15:00, 2015年8月9日下午3:30:00 , 2015年8月9日4:00:00 AM, 2015年8月9日4:52:00 AM, 2015年8月9日5:35:00 AM, 2015年8月9日10:00 AM
6789 2015年8月9日凌晨2:00, 2015年8月9日凌晨5:00, 2015年8月9日上午5:00, 2015年7:52:00, 2015年8月9日上午11:50:00, 2015年8月9日下午1:30:00, 2015年8月9日下午2:36:00 , 2015年8月9日下午3:00, 2015年8月9日下午5:50:00, 2015年8月9日下午9:00:00, 2015年8月10日上午12:00:00, 2015年8月10日上午1:00:00, 2015年8月10日下午2:00:00, 2015年8月10日下午4:00, 2015年10月8日上午5:58:00, 2015年10月8日上午7:00:00, 2015年8月10日上午8:55:00, 2015年8月10日上午10:00:00, 2015年8月10日下午12:00:00
当我在邮箱中输入这个问题时,我无法格式化这些字段,使“提要”显示在一行中。但这正是我努力实现的目标。
我尝试了以下查询,但由于聚合的,所以我只能在“提要”列中多次重复一个值
选择PatEnc_ID ,
LTIM ( MAX(SYS_连接_BY_路径(记录_时间,',') )
KEEP (DENSE_RANK LAST 排序依据curr),',') AS feeding
从 (SELECTEncounterTable.PatEnc_ID,
馈送表.RECORDED_时刻,
ROW_NUMBER() OVER (PARTITION BYEncounterTable.PatEnc_ID 排序依据FeedingTable.RECORDED_TIME) AS curr,
ROW_NUMBER() OVER (PARTITION BYEncounterTable.PatEnc_ID 排序依据FeedingTable.RECORDED_TIME) -1 AS prev
从 EncounterTable
LEFT OUTER JOIN FeedingTable ONEncounterTable.PatEnc_ID =FeedingTable.Pat_ID
在哪里
馈送表.FLO_MEAS_ID ='707903'
)
按PatEnc_ID分组
按前一连接=前一电流和PatEnc_ID =前一PatEnc_ID
开始时curr = 1 ;
馈送表记录_时间日期
馈送表。值变量2 ( 2500字节)
馈送表.Value_comment Varchar2 ( 255字节)
馈送表.RowTypeID Varchar2 ( 18字节)
供料表Pat_ID号(18)
选择
EncounterTable.PatEnc_ID
,馈送表。记录_时间
从
EncounterTable
Left Outer Join FeedingTable ONEncounterTable.PatEnc_ID = FeedingTable.Pat_ID
在哪里
FeedngTable.RowTypeID='707903'
排序依据
EncounterTable.PatEnc_ID
,馈送表。记录_时间
PatEnc_ID Recorded_Time
1234 2015年8月9日上午6:00:00
1234 2015年8月9日上午8:30:00
1234 2015年8月9日上午9:48:00
1234 2015年8月9日中午12:00:00
1234 2015年8月9日12:15:00 AM
1234 2015年8月9日凌晨3:30:00
1234 2015年8月9日凌晨4:00
1234 2015年8月9日上午4:52:00
1234 2015年8月9日上午5:35:00
1234 2015年8月9日上午10:00:00
6789 2015年8月9日凌晨2:00
6789 2015年8月9日上午5:00:00
6789 2015年8月9日上午7:52:00
6789 2015年8月9日上午11:50:00
6789 2015年8月9日下午1:30:00
6789 2015年8月9日下午2:36:00
6789 2015年8月9日下午3:00
6789 2015年8月9日下午5:50:00
6789 2015年8月9日下午9:00:00
6789 2015年8月10日12:00:00 AM
6789 2015年8月10日凌晨1:00:00
6789 2015年8月10日凌晨2:00
6789 2015年8月10日4:00 AM
6789 2015年8月10日上午5:58:00
6789 2015年8月10日上午7:00:00
6789 2015年8月10日上午8:55:00
6789 2015年8月10日上午10:00:00
6789 2015年8月10日中午12:00:00
使用最优化的查询的所需输出:
PatEnc_ID馈电
1234年8月9日上午6:00:00, 2015年8月9日上午8:30:00, 2015年8月9日上午9:48:00, 2015年8月9日下午12:00:00, 2015年8月9日12:AM15:00, 2015年8月9日下午3:30:00 , 2015年8月9日4:00:00 AM, 2015年8月9日4:52:00 AM, 2015年8月9日5:35:00 AM, 2015年8月9日10:00 AM
6789 2015年8月9日凌晨2:00, 2015年8月9日凌晨5:00, 2015年8月9日上午5:00, 2015年7:52:00, 2015年8月9日上午11:50:00, 2015年8月9日下午1:30:00, 2015年8月9日下午2:36:00 , 2015年8月9日下午3:00, 2015年8月9日下午5:50:00, 2015年8月9日下午9:00:00, 2015年8月10日上午12:00:00, 2015年8月10日上午1:00:00, 2015年8月10日下午2:00:00, 2015年8月10日下午4:00, 2015年10月8日上午5:58:00, 2015年10月8日上午7:00:00, 2015年8月10日上午8:55:00, 2015年8月10日上午10:00:00, 2015年8月10日下午12:00:00
当我在邮箱中输入这个问题时,我无法格式化这些字段,使“提要”显示在一行中。但这正是我努力实现的目标。
我尝试了以下查询,但由于聚合的,所以我只能在“提要”列中多次重复一个值
选择PatEnc_ID ,
LTIM ( MAX(SYS_连接_BY_路径(记录_时间,',') )
KEEP (DENSE_RANK LAST 排序依据curr),',') AS feeding
从 (SELECTEncounterTable.PatEnc_ID,
馈送表.RECORDED_时刻,
ROW_NUMBER() OVER (PARTITION BYEncounterTable.PatEnc_ID 排序依据FeedingTable.RECORDED_TIME) AS curr,
ROW_NUMBER() OVER (PARTITION BYEncounterTable.PatEnc_ID 排序依据FeedingTable.RECORDED_TIME) -1 AS prev
从 EncounterTable
LEFT OUTER JOIN FeedingTable ONEncounterTable.PatEnc_ID =FeedingTable.Pat_ID
在哪里
馈送表.FLO_MEAS_ID ='707903'
)
按PatEnc_ID分组
按前一连接=前一电流和PatEnc_ID =前一PatEnc_ID
开始时curr = 1 ;
专家解答
谢谢你对你的要求的明确描述,米哈尔。请包括创建表语句和插入在未来,它使它更容易为我们帮助您!
可以使用listaggg()将行转换为逗号分隔的字符串。
下面是一个基于您的数据的简化示例:
可以使用listaggg()将行转换为逗号分隔的字符串。
下面是一个基于您的数据的简化示例:
alter session set nls_date_format = 'dd/mm/yyyy hh:mi:ss am';
create table FeedingTable (
Pat_ID Number(18),
Recorded_Time Date
);
insert into FeedingTable
values (1234, '8/9/2015 4:52:00 AM');
insert into FeedingTable
values (1234 , '8/9/2015 5:35:00 AM');
insert into FeedingTable
values (1234 , '8/9/2015 10:00:00 AM');
insert into FeedingTable
values (6789 , '8/9/2015 2:00:00 AM');
insert into FeedingTable
values (6789 , '8/9/2015 5:00:00 AM');
insert into FeedingTable
values (6789 , '8/9/2015 7:52:00 AM');
commit;
select pat_id,
listagg(Recorded_Time, ',') within group (order by recorded_time) dts
from feedingtable
group by pat_id;
PAT_ID DTS
---------- ------------------------------------------------------------
1234 08/09/2015 04:52:00,08/09/2015 05:35:00,08/09/2015 10:00:00
6789 08/09/2015 02:00:00,08/09/2015 05:00:00,08/09/2015 07:52:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




