我有4个任务:
我想选择cIds(公司)公司地址(公司名称(公司),街道(街道)和邮政编码(代码)的组合)不是CURRENT交付地址(公司组合)名称(del),街道(街道2)和邮政编码(cod2)已经=>订单已经发送到另一个地址,在第一次使用地址后(使用地址的第一个订单日期(Date1)和最新订购此地址(日期2)。[没有订单到实际的公司地址]
我想选择行cIds(公司)公司地址(公司名称(公司),街道(街道)和邮政编码(代码)的组合)是明年1年的实际交付地址并且不是CURRENT交付地址(公司名称(del),街道(街道2)和邮政编码(cod2)的组合=>订单已经发送到另一个地址,在地址被用于最少1年之后(使用地址的第一个订单日期(Date1)和此地址的最新订单(Date2)。[不再向公司地址发出订单,公司地址为最短1年的送货地址]
我想选择cIds(公司)公司地址(公司名称(公司),街道(街道)和邮政编码(代码)的组合)是CURRENT交货地址(公司名称的组合) (del),街道(街道2)和邮政编码(cod2)AND订单也被发送到另一个地址,在第一次使用地址后(使用地址的第一个订单日期(Date1)和最新订单到此地址(日期2)。 [订单到实际的公司地址和另一个地址]
我想选择cIds(公司)公司地址(公司名称(公司),街道(街道)和邮政编码(代码)的组合)是CURRENT交货地址(公司名称的组合) (del),街道(街道2)和邮编(cod2)FOR MIN 1年和订单也被发送到另一个地址,地址被用于最少1年(使用地址的第一个订单的日期(Date1)这个地址的最新订单(Date2)。 [订单到实际的公司地址和另一个地址]
cID =公司的身份证件
日期1 =首次订购日期
日期2 =上次/最新订单的日期
以下是一些数据,以便于理解:
|cID ||company|Street |Code|del |Street2 |Cod2|Date 1 |Date 2 |
+------------------------------------------------------------------------+
|1 ||Ex1 |ABC Rd.1|4025|Ex1 |DEL St.1|0212|01.01.2015|06.03.2015|
|1 ||Ex1 |ABC Rd.1|4025|Ex1 |REF Wy.1|9875|26.02.2015|16.05.2015|
|1 ||Ex1 |ABC Rd.1|4025|Ex1 |ABC Rd.1|4025|13.06.2015|18.07.2016|
|1 ||Ex1 |ABC Rd.1|4025|Ex1 |RAD St.7|1238|13.08.2016|08.08.2017|
|2 ||Ex2 |HIO Wy.1|9999|Ex2 |DEL St.1|0212|13.03.2015|09.07.2015|
|2 ||Ex2 |HIO Wy.1|9999|Ex2 |REG St.1|6754|21.02.2015|16.05.2015|
|2 ||Ex2 |HIO Wy.1|9999|Ex2 |BLA Rd.5|0897|01.03.2015|06.12.2015|
|2 ||Ex2 |HIO Wy.1|9999|Ex2 |HIO Wy.1|9999|09.01.2017|26.06.2017|
|2 ||Ex2 |HIO Wy.1|9999|Ex2 |RAD St.7|1238|13.07.2017|08.08.2017|
|3 ||Ex3 |REG St.1|1114|Ex3 |REG St.1|1114|21.03.2015|16.04.2017|
|3 ||Ex3 |REG St.1|1114|Ex3 |DEL St.9|0212|13.11.2016|09.02.2017|
|4 ||Ex4 |FAR RD.9|4567|Ex4 |FAR RD.9|4567|09.10.2016|26.12.2016|
|4 ||Ex4 |FAR RD.9|4567|Ex4 |DDR Wy.2|0897|01.03.2017|06.07.2016|
结果
任务1:cID 2
任务2:cID 1
任务3:cID4
任务4:cID 3
这是我的实际工作点,我无法继续 - 我知道有4个不同的代码可以写,但我真的不知道如何开始甚至其中一个:(
SELECT cID
FROM Table1
WHERE Street = Street2
AND Code = Cod2
AND Date1 > (
SELECT !=MAX(Date2)
FROM Table1 as delivery
WHERE Table1.cID = delivery.cID
AND (delivery.Street2 <> Street OR delivery.Cod2 <> Code)
)
- &GT;请帮我一个忙,并在你认为得到答案的地方标记任务
答案 0 :(得分:0)
;with cte as
(
select cID ,company,Street ,Code,del,Street2 ,Cod2,[Date 1],[Date 2]
, row_number() over (partition by cID order by [Date 1]) rnfirst
, row_number() over (partition by cID order by [Date 2] desc) as rnLast
from Table1
)
select t1.cID
from cte t1
join cte t2 on t1.cId=t2.cID
where t2.rnLast=1
and t1.rnFirst = 1
and (t1.Street<>t2.Street2 or t1.Code<>t2.Cod2)