Sql 如何检查两个单元格的值是否相同?

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

我正在使用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 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

您的问题不清楚。。展示你的预期结果