Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何选择显示在特定值之前的行?_Date_Pyspark_Apache Spark Sql_Databricks - Fatal编程技术网

Date 如何选择显示在特定值之前的行?

Date 如何选择显示在特定值之前的行?,date,pyspark,apache-spark-sql,databricks,Date,Pyspark,Apache Spark Sql,Databricks,我有一张包含以下信息的表格: CREATE TABLE A ( ID int, start_date varchar(255), effdate varchar(255), enddate varchar(255), lead_effdate varchar(255), value varchar(255), source varchar(255), lead_source varchar(255) ); INSERT INTO A

我有一张包含以下信息的表格:

CREATE TABLE A (
    ID int,
    start_date varchar(255),
    effdate varchar(255),
    enddate varchar(255),
    lead_effdate varchar(255),
    value varchar(255),
    source varchar(255),
    lead_source varchar(255)
);
INSERT INTO A
VALUES (1,"12/01/2013","12/01/2013","30/07/2014","31/07/2014",4,"REM","REM"),
(1,"31/07/2014","31/07/2014","04/09/2014","12/09/2014",4,"REM","REM"),
(1,"12/09/2014","12/09/2014","12/04/2015","13/04/2015",4,"REM","REM"),
(1,"13/04/2015","13/04/2015","01/01/2016","02/01/2016",4,"REM","REM"),
(1,"02/01/2016","02/01/2016","11/03/2016","13/03/2016",4,"REM","REM"),
(1,"13/03/2016","13/03/2016","22/04/2017","10/07/2016",4,"REM","GS"),
(1,"10/07/2016","10/07/2016",null,"23/04/2017",4,"GS","REM"),
(1,"23/04/2017","23/04/2017","05/05/2018","06/05/2018",4,"REM","REM"),
(1,"06/05/2018","06/05/2018","09/11/2019","10/11/2019",4,"REM","REM"),
(1,"10/11/2019","10/11/2019",null,null,4,"REM",null);

select * from A
order by start_date
我想删除从source=GS到表中最低行的所有行。如您所见,订单由开始日期给出

我试图在(按…划分)上使用一个行数()来创建GS周围的负值和正值,但我无法计算此索引。您将如何解决它?

如果“到底”是指“更大的id”,那么您可以在
删除
中使用
连接

delete a
    from a join
         (select max(id) as gs_id
          from a
          where source = 'GS'
         ) aa
         on a.id > aa.gs_id;

您希望选择日期等于或高于source='GS'的行的所有行。因为可以有多行source='GS'
您必须选择一行。可能是第一行,也可能是最后一行

delete from a where start_date >= (select min(start_date) from a where source = 'GS');

数据没有意义,varchar必须用引号括起来,还必须始终将日期保存为date而不是varchar,并在您仅选择它时格式化它
从source=GS到底部的所有行
?您在说什么顺序?所有
source>='GS'
的行?这不是有效的SQL。提示:使用类型作为日期值,并将其编码为,如中所示<代码> yyy-MM-DD 。提示:“代码> 12”/“01”/“代码”是什么?考虑“代码”>选择“12”/“01”/“2013”/“代码”。对不起,表。我纠正了这些值,现在应该工作。DelabRek不支持删除。您知道另一种方法吗?我不知道数据库。您的问题是标记<代码> mysql < /代码>。我的答案是标准。符合rd的
DELETE
语句,该语句在MySQL和任何其他RDBMS中都能运行……我刚才在Google上搜索了
databricks
DELETE
:看起来它是受支持的。SQL语句中的错误:AnalysisException:DELETE destination只支持增量源。正如您所见,除非表是空的,否则databricks不支持DELETE存储在Delta源代码中,我不能这样做。好吧。那我就无能为力了。对不起。我知道SQL和一些RDBMS。我不知道Databricks。