Sql 基于日期从联接中选择列的值-使用表和代码

Sql 基于日期从联接中选择列的值-使用表和代码,sql,sql-server,tsql,Sql,Sql Server,Tsql,我之前发布了一个类似的问题,但我想我会再次发布一些附加信息 基本上,我需要做的是将值拉入基于过期的数据集中,并且我需要为每个客户提供一个唯一的值。每个客户都有一个他们正在使用的产品,以及一个他们将在续订时自动使用的产品 如果他们的续订日期大于今天,我需要退回他们今天的产品。如果他们的续约日期少于今天,我需要使用他们的续约产品 成品应如下所示: CREATE TABLE mytable( FIELD1 VARCHAR(6) NOT NULL PRIMARY KEY ,FIELD2 VARCHAR(

我之前发布了一个类似的问题,但我想我会再次发布一些附加信息

基本上,我需要做的是将值拉入基于过期的数据集中,并且我需要为每个客户提供一个唯一的值。每个客户都有一个他们正在使用的产品,以及一个他们将在续订时自动使用的产品

如果他们的续订日期大于今天,我需要退回他们今天的产品。如果他们的续约日期少于今天,我需要使用他们的续约产品

成品应如下所示:

CREATE TABLE mytable(
FIELD1 VARCHAR(6) NOT NULL PRIMARY KEY
,FIELD2 VARCHAR(11) NOT NULL
,FIELD3 VARCHAR(8) NOT NULL
,FIELD4 VARCHAR(10) NOT NULL
);
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES 
('custid','product','category','enddate');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES  
('1','FlexLife','H','01/01/2060');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES 
('2','whoellife12','R','06/08/2019');
以下是第一个数据集的外观:

CREATE TABLE mytable(
FIELD1 VARCHAR(6) NOT NULL PRIMARY KEY
);
INSERT INTO mytable(FIELD1) VALUES ('custid');
INSERT INTO mytable(FIELD1) VALUES ('1');
INSERT INTO mytable(FIELD1) VALUES ('2');
应将其与此数据集结合以实现以下结果:

CREATE TABLE mytable(
FIELD1 VARCHAR(6) NOT NULL PRIMARY KEY
,FIELD2 VARCHAR(12) NOT NULL
,FIELD3 VARCHAR(8) NOT NULL
,FIELD4 VARCHAR(10) NOT NULL
);
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES   
('custid','product','category','enddate');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES    
('1','wholelife12','R','02/07/2019');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES    
('2','powerlife12','R','06/08/2019');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES    
('1','flexlife','H','01/01/2060');
INSERT INTO mytable(FIELD1,FIELD2,FIELD3,FIELD4) VALUES    
('2','flexlife','H','1/1/2060');

提前感谢您的帮助

编辑第一个问题可能会更好。现在,也许你应该删除它来支持这一个?结构是不寻常的,如果FIELD4是一个日期而不是VARCHAR,这不是更容易吗?而且现在所有的日期都大于>今天,你的意思是2018年8月6日吗?是的,这就是我的意思@Ian FogelmanI在国防部的建议下把它放进了自动发电机,这就是结果@德甘