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 以集合进行交易。
如果 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 以集合进行交易。