在关键字db2中使用时获得错误的输出

在关键字db2中使用时获得错误的输出,db2,dashdb,Db2,Dashdb,这就是我的问题: select count(a.rs1) as partsProduced, a.DEVICEID ,a.DATA_MAINPROGRAMNO from ( SELECT currow, rs1, rs2,DEVICEID,DATA_MAINPROGRAMNO FROM ( SELECT current_row.row1 currow, current_row.DATA_RUNSTATUS rs1, current_row.DEVI

这就是我的问题:

select count(a.rs1) as partsProduced, a.DEVICEID ,a.DATA_MAINPROGRAMNO from (
    SELECT currow, rs1, rs2,DEVICEID,DATA_MAINPROGRAMNO
    FROM (
    SELECT current_row.row1  currow,
     current_row.DATA_RUNSTATUS rs1, 
     current_row.DEVICEID DEVICEID,
      current_row.DATA_MAINPROGRAMNO DATA_MAINPROGRAMNO,
     next_row.row1 nextrow,
     next_row.DATA_RUNSTATUS rs2
    FROM (SELECT rownumber() over(order by  DATA_TIMEINMILLISECS) as row1, m.* FROM "IOTP_SL2IID_GOVHISTORICALDB_2017-03-20"
    m where DEVICEID ='deviceName' ) AS current_row
    LEFT JOIN (SELECT rownumber() over(order by DATA_TIMEINMILLISECS) as row1, m.* FROM "IOTP_SL2IID_GOVHISTORICALDB_2017-03-20" m 
    where DEVICEID ='deviceName' ) AS next_row 
    ON (current_row.row1 = next_row.row1 - 1)
    where (TIMESTAMP_FORMAT(current_row.DATA_TIMESTAMP,'YYYY.MM.DD.HH24.MI.SS') 
    BETWEEN '2017-03-20 14:00:00' AND '2017-03-20 15:00:00')) AS a WHERE a.rs1 = 3 AND a.rs2 = 0) as a group by a.DEVICEID ,a.DATA_MAINPROGRAMNO;
在这里,我得到了正确的输出,在给定的时间内生产的部件是17个,但每当我将DEVICEID='deviceName'替换为

由于我需要多个deviceNames并用它进行查询,现在我为同一个设备得到了300个东西,这是我之前用单个设备运行的,那么我是否使用IN关键字correct??或者有什么需要编辑的吗?

Rahul

确保表DEVICE中的DEVICE_ID值不为null。如果它的值不为null,则可以继续执行现有查询:

从设备d中选择d.DEVICE\u ID中的设备ID在l.ID=d.line\u ID上左连接线l,其中l.ID=1

如果设备ID有空值,则使用下面的查询

选择不同的nvld.DEVICE\u ID中的DEVICEID,从设备d中选择0在l.ID=d.line\u ID上左连接线l,其中l.ID=1


您的子查询返回了多少设备ID…?@data\u henrik 20,顺便说一句,它们是名称,即字符串
DEVICEID IN ( select d.DEVICE_ID  from device d  left join line l  on ( l.id=d.LINE_ID ) where l.id=1