Sql 如何检查两个单元格的值是否相同?
我正在使用PSQL查询数据库。我正在使用两个表(Sql 如何检查两个单元格的值是否相同?,sql,postgresql,Sql,Postgresql,我正在使用PSQL查询数据库。我正在使用两个表(d_items和chartevents),它们使用itemid链接 下面的代码 select subject_id, hadm_id, icustay_id , di.itemid, di.label , charttime, storetime , value, valuenum, valueuom , error, resultstatus from chartevents ce inner
d_items
和chartevents
),它们使用itemid
链接
下面的代码
select
subject_id, hadm_id, icustay_id
, di.itemid, di.label
, charttime, storetime
, value, valuenum, valueuom
, error, resultstatus
from chartevents ce
inner join d_items di
on ce.itemid = di.itemid
where subject_id BETWEEN 1 AND 10
and di.itemid in
(
8368, 51
)
order by subject_id, charttime, itemid)
产出:
(链接:)
我只想保留包括收缩压和舒张压的测量值。因此,实际上,每个(唯一的)图表时间都必须同时具有这两个属性。如何实现这一点?我是一名使用Oracle的开发人员,但我想我可以提供一些概念来帮助您。 看看你的表,我认为表d_项仅仅是一个标识 收缩测量数据与舒张测量数据。所以,我们可以忽略表 d_项目。
我认为你的目标是在同一记录上显示收缩压和舒张压。 您要做的是将表chartevents自身连接起来。我想那个人是 ChartTime将定义一组独特的记录。查看输出列,它看起来 like value和valuenum表示相同的数据 您的表联接将如下所示: 选择systol.价值,diastol.价值。。。。。。 来自chartevents系统 加入沙特尔 on(systol.subject\u id=diastol.subject\u id 和systol.charttime=diastol.charttime) 在哪里
我将把剩下的工作留给您来完成查询。您可以使用窗口函数或
存在
。因此,这里有一种方法:
with t as (
select subject_id, hadm_id, icustay_id,
di.itemid, di.label,
charttime, storetime,
value, valuenum, valueuom,
error, resultstatus
from chartevents ce inner join
d_items di
on ce.itemid = di.itemid
where subject_id between 1 and 10 and
di.itemid in (8368, 51)
)
select t.*
from (select t.*,
sum( (itemid = 51):: int) over (partition by subject_id, charttime) as cnt_51,
sum( (itemid = 8368):: int) over (partition by subject_id, charttime) as cnt_8368
from t
) t
where cnt_51 > 0 and cnt_8368 > 0
order by subject_id, charttime, itemid;
我正在使用
itemid
来识别这两个测量值。您可能需要在标签上使用like
您的问题不清楚。。展示你的预期结果