SQL Microsoft Access 立即显示下一行

SQL Microsoft Access Show immediate next row

如果 WHERE 语句中的 rowa 为真,我将尝试显示 rowa 和 rowb(在其正下方)。我确实有它按日期排序,但这不会影响任何东西。如果显示 rowa,是否有任何快速显示 rowb 的方法?

我的代码是...

SELECT Roster.`Complete Name`, RS1018to1024.`Day of Week`, RS1018to1024.`Date`, RS1018to1024.`Time Type`, RS1018to1024.`Attribute`, RS1018to1024.`Value`, RS1018to1024.`Hourly value (in decimals)`

FROM Roster 

INNER JOIN RS1018to1024 ON Roster.GIN = RS1018to1024.GIN
WHERE (RS1018to1024.`Hourly value (in decimals)` >15 AND RS1018to1024.`Time Type`='Wellsite/Job/Vessel' OR RS1018to1024.Attribute='Job ID'  ) 
OR (RS1018to1024.`Time Type`='On Office-Base-Lab' AND RS1018to1024.Attribute='Regular Work Day' AND RS1018to1024.`Hourly value (in decimals)`>8)  

ORDER BY RS1018to1024.`Complete Name`, RS1018to1024.`Date`, RS1018to1024.`Attribute` DESC;

Day of Week|   Date    | Time Type |  Attribute    | Value     | Hourly value

Tues       |20-Oct-2015| Wellsite  |  Reg Work Day | RGWD      | 16.8

Tues       |20-Oct-2015| Wellsite  |  Job ID       | 2213      |

Friday     |23-Oct-2015| Wellsite  |  Job ID       | 2251      |

Wed        |21-Oct-2015| Wellsite  |  Reg Work Day | RGWD      | 24

Tues       |21-Oct-2015| Wellsite  |  Job ID       | 2317      |

Sunday     |18-Oct-2015| On Office |  Reg Work Day | RGWD      | 12.2

CREATE TABLE mytable(
   Day_of_Week                VARCHAR(8) NOT NULL PRIMARY KEY
  ,Date                       VARCHAR(9) NOT NULL
  ,Time_Type                  VARCHAR(19) NOT NULL
  ,Attribute                  VARCHAR(16) NOT NULL
  ,Value                      VARCHAR(28) NOT NULL
  ,Hourly_value_in_decimals   NUMERIC(5,2)
);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Tuesday','20-Oct-15','Wellsite/Job/Vessel','Regular Work Day','RGWD - Regular Work Day (BR)',16.75);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Tuesday','20-Oct-15','Wellsite/Job/Vessel','Job ID','2213840',NULL);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Friday','23-Oct-15','Wellsite/Job/Vessel','Job ID','2212599',NULL);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Friday','23-Oct-15','Wellsite/Job/Vessel','Regular Work Day','RGWD - Regular Work Day (BR)',23.87);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Saturday','24-Oct-15','Wellsite/Job/Vessel','Job ID','2212599',NULL);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Sunday','18-Oct-15','On Office-Base-Lab','Regular Work Day','RGWD - Regular Work Day (BR)',19.87);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Monday','19-Oct-15','On Office-Base-Lab','Regular Work Day','RGWD - Regular Work Day (BR)',11.17);

我想看到的是...

Day of Week|   Date    | Time Type |  Attribute    | Value     | Hourly value

Tues       |20-Oct-2015| Wellsite  |  Reg Work Day | RGWD      | 16.8

Tues       |20-Oct-2015| Wellsite  |  Job ID       | 2213      |

Wed        |21-Oct-2015| Wellsite  |  Reg Work Day | RGWD      | 24

Tues       |21-Oct-2015| Wellsite  |  Job ID       | 2317      |

Sunday     |18-Oct-2015| On Office |  Reg Work Day | RGWD      | 12.2

CREATE TABLE mytable(
   Day_of_Week                VARCHAR(8) NOT NULL PRIMARY KEY
  ,Date                       VARCHAR(9) NOT NULL
  ,Time_Type                  VARCHAR(19) NOT NULL
  ,Attribute                  VARCHAR(16) NOT NULL
  ,Value                      VARCHAR(28) NOT NULL
  ,Hourly_value_in_decimals   NUMERIC(5,2)
);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Tuesday','20-Oct-15','Wellsite/Job/Vessel','Regular Work Day','RGWD - Regular Work Day (BR)',16.75);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Tuesday','20-Oct-15','Wellsite/Job/Vessel','Job ID','2213840',NULL);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Friday','23-Oct-15','Wellsite/Job/Vessel','Regular Work Day','RGWD - Regular Work Day (BR)',23.87);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Saturday','24-Oct-15','Wellsite/Job/Vessel','Job ID','2212599',NULL);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Sunday','18-Oct-15','On Office-Base-Lab','Regular Work Day','RGWD - Regular Work Day (BR)',19.87);
INSERT INTO mytable(Day_of_Week,Date,Time_Type,Attribute,Value,Hourly_value_in_decimals) VALUES ('Monday','19-Oct-15','On Office-Base-Lab','Regular Work Day','RGWD - Regular Work Day (BR)',11.17);

因此,每个表示 Wellsite 的时间类型都需要两行。一个用于注册工作日,下一行显示工作 ID。我的代码显示了所有具有 Job ID 的行,这是我需要删除的,除非它们上面有 Reg Work Day。另外,我有一排上班时间类型很好,我没有遇到任何问题。

您的要求的问题是您假设数据是有序的并且您是这一行和下一行。但是,在 SQL 中,数据未排序,您需要在 ORDER BY 子句上使用一列来获取订单。

查看您的示例数据,您想要的两行似乎都具有相同的日期。如果是这种情况,那么解决方案并不难。你这样做:

首先您会得到一个符合条件的日期列表。

SELECT `Date` 
FROM ROSTER 
WHERE `Hourly Value` > 15 AND Attribute = 'Reg Work Day'

那你就以这个榜单作为选择其余table

的标准
SELECT *
FROM ROSTER
WHERE `Date` IN (
  SELECT `Date` 
  FROM ROSTER 
  WHERE `Hourly Value` > 15 AND Attribute = 'Reg Work Day'
) sub

这里的要点是,您不能在 SQL 中按顺序思考 - 您必须按集合思考 - SQL 以集合进行交易。