|
|
|
|
/*交易记录挂车牌*/
|
|
|
|
|
/*把POSID和车牌一一对应的先匹配 没配上的交易条数65411*/
|
|
|
|
|
select * into [temp].[dbo].[jy623_plate1] from
|
|
|
|
|
(select a.*,b.[车牌] as platenum from
|
|
|
|
|
[klb].[dbo].[qsjy_0623] a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct [POS机编号],[车牌] from [temp].[dbo].[posplate623] where [POS机编号] in (
|
|
|
|
|
SELECT distinct [POS机编号] FROM [temp].[dbo].[posplate623] group by [POS机编号] having count(distinct [车牌]) = 1)) b
|
|
|
|
|
on a.[tjrlposid] = b.[POS机编号]) e
|
|
|
|
|
|
|
|
|
|
/*监控数据中司售卡和车牌一一对应的 匹配车牌 没配上的交易条数7430*/
|
|
|
|
|
select * into temp1 from (SELECT * FROM [temp].[dbo].[jy623_plate1] where [platenum] is null ) a ---65411
|
|
|
|
|
|
|
|
|
|
select * into temp2 from
|
|
|
|
|
(SELECT a.* , b.[line_name_gj],b.[line_code_jtk]
|
|
|
|
|
FROM [klb].[dbo].[monitor$] a left join [temp].[dbo].[linematch] b on a.线路 = b.[line_name_gj])b --8210 添加了jtk线路代码的监控数据temp2
|
|
|
|
|
|
|
|
|
|
select * into [temp].[dbo].[jy623_plate2] from (
|
|
|
|
|
select a.tjrlcardno,a.tjrlposid,a.tjrlrdate,a.tjrlrtime,a.[tjrlsdate] ,a.[tjrlcdkind] ,a.[tjrlamt],a.[tjrlstatid] ,a.[tjrlunitid],a.[tjrlorgamt],
|
|
|
|
|
a.[tjrlposcardid],b.[牌照号] as platenum from temp1 a
|
|
|
|
|
left join
|
|
|
|
|
(
|
|
|
|
|
select distinct [司售卡编码],[线路],line_code_jtk,[牌照号] from temp2 where [司售卡编码] in
|
|
|
|
|
(select [司售卡编码] from temp2 where [司售卡编码] != '' group by [司售卡编码],[线路] having count(distinct [牌照号]) = 1)) b
|
|
|
|
|
on a.tjrlposcardid = b.司售卡编码) a ----考虑有的司机会乱刷线路卡,只用司售卡编码做关联
|
|
|
|
|
|
|
|
|
|
select * into temp3 from (SELECT * FROM [temp].[dbo].[jy623_plate2] where [platenum] is null ) a ---7530
|
|
|
|
|
|
|
|
|
|
/*根据交易时间从监控数据中捞车牌补全 又补了1539条*/
|
|
|
|
|
UPDATE temp2 SET [实际出场时间] = [计划出场时间] where [实际出场时间] = ''
|
|
|
|
|
UPDATE temp2 SET [实际出场时间] = substring([实际出场时间],12,2)+substring([实际出场时间],15,2)+substring([实际出场时间],18,2)
|
|
|
|
|
|
|
|
|
|
select * into temp5
|
|
|
|
|
from (
|
|
|
|
|
select *, cast(e.tjrlrtime as numeric) - cast(e.实际出场时间 as numeric) as delta from (
|
|
|
|
|
select a.tjrlcardno,a.tjrlposid,a.tjrlrdate,a.tjrlrtime,a.[tjrlsdate] ,a.[tjrlcdkind] ,a.[tjrlamt],a.[tjrlstatid] ,a.[tjrlunitid],a.[tjrlorgamt],
|
|
|
|
|
a.[tjrlposcardid],b.实际出场时间,b.牌照号 from
|
|
|
|
|
(select * from temp3) a
|
|
|
|
|
left join
|
|
|
|
|
(select * from temp2 where [司售卡编码] != '' ) b
|
|
|
|
|
on a.[tjrlposcardid] = b.司售卡编码 )e where e.[实际出场时间] is not null) f ----3222
|
|
|
|
|
|
|
|
|
|
select * into temp6 from (
|
|
|
|
|
select a.tjrlcardno,a.tjrlposid,a.tjrlrdate,a.tjrlrtime,a.[tjrlsdate] ,a.[tjrlcdkind] ,a.[tjrlamt],a.[tjrlstatid] ,a.[tjrlunitid],a.[tjrlorgamt],
|
|
|
|
|
a.[tjrlposcardid],a.牌照号 as platenum
|
|
|
|
|
from (
|
|
|
|
|
select b.*,ROW_NUMBER() over (partition by tjrlcardno,tjrlposcardid order by delta) as rn
|
|
|
|
|
from (select * from temp5 where delta > 0) b) a where rn = 1 )g --1593 根据实际出场时间筛选又配了一部分
|
|
|
|
|
|
|
|
|
|
/*把三次匹配的表整合*/
|
|
|
|
|
select * into [temp].[dbo].[jy623_plate3] from (
|
|
|
|
|
select distinct c.* , d.platenum as platenum2 from
|
|
|
|
|
(
|
|
|
|
|
select distinct a.*, b.platenum as platenum1 from
|
|
|
|
|
(select * from temp0) a
|
|
|
|
|
left join
|
|
|
|
|
(select * from [temp].[dbo].[jy623_plate2]) b
|
|
|
|
|
on a.tjrlcardno = b.tjrlcardno and a.tjrlrtime = b.tjrlrtime) c
|
|
|
|
|
left join
|
|
|
|
|
(select * from temp6) d
|
|
|
|
|
on c.tjrlcardno = d.tjrlcardno and c.tjrlrtime = d.tjrlrtime) g -----887667
|
|
|
|
|
|
|
|
|
|
update [temp].[dbo].[jy623_plate3]
|
|
|
|
|
set platenum = platenum1 where platenum is null and platenum1 is not null
|
|
|
|
|
update [temp].[dbo].[jy623_plate3]
|
|
|
|
|
set platenum = platenum2 where platenum is null and platenum2 is not null
|
|
|
|
|
|
|
|
|
|
/*最终生成的挂车牌交易记录[temp].[dbo].[jy623_platematch]*/
|
|
|
|
|
select * into [temp].[dbo].[jy623_platematch] from (
|
|
|
|
|
select distinct a.tjrlcardno,a.tjrlposid,a.tjrlrdate,a.tjrlrtime,a.[tjrlsdate] ,a.[tjrlcdkind] ,a.[tjrlamt],a.[tjrlstatid] ,a.[tjrlunitid],a.[tjrlorgamt],
|
|
|
|
|
a.[tjrlposcardid],a.platenum from [temp].[dbo].[jy623_plate3] a) b
|
|
|
|
|
|
|
|
|
|
/*匹配结果*/
|
|
|
|
|
select * from [temp].[dbo].[jy623_platematch] where platenum is null ---5834
|
|
|
|
|
select count(distinct tjrlposid) from [temp].[dbo].[jy623_platematch] where platenum is null --70
|
|
|
|
|
select count(distinct tjrlposid) from [temp].[dbo].[jy623_platematch] ---5453
|
|
|
|
|
|
|
|
|
|
/*电子路单及交易数据时间处理*/
|
|
|
|
|
delete from [temp].[dbo].[dzld623] where sxx is null
|
|
|
|
|
update [temp].[dbo].[dzld623] set SJFCSJ = SUBSTRING(SJFCSJ,4,1)+SUBSTRING(SJFCSJ,1,2)+SUBSTRING(SJFCSJ,11,2)+ SUBSTRING(SJFCSJ,14,2)+SUBSTRING(SJFCSJ,17,2)
|
|
|
|
|
UPDATE [temp].[dbo].[dzld623] SET SJDDSJ = SUBSTRING(SJDDSJ,4,1)+SUBSTRING(SJDDSJ,1,2)+SUBSTRING(SJDDSJ,11,2)+ SUBSTRING(SJDDSJ,14,2)+SUBSTRING(SJDDSJ,17,2)
|
|
|
|
|
update [temp].[dbo].[jy623_platematch] set tjrlrtime = substring(tjrlrdate,6,3)+tjrlrtime
|
|
|
|
|
|
|
|
|
|
/*错位填补*/
|
|
|
|
|
---select * into temp21 from(select * from [temp].[dbo].[dzld623] where fczdmc not like '%场' and ddzdmc not like '%场')a
|
|
|
|
|
SELECT * INTO temp21 FROM (SELECT a.* , lag(SJDDSJ, 1, 0) over(PARTITION BY CPH ORDER BY SJFCSJ) changefc FROM [temp].[dbo].[dzld623] a) C ---64292
|
|
|
|
|
update temp21 set changefc = SJFCSJ-10000 where changefc = '0' ----5373
|
|
|
|
|
|
|
|
|
|
/*匹配*/
|
|
|
|
|
select * into temp22 from
|
|
|
|
|
(
|
|
|
|
|
select distinct a.*,b.XLMC,b.sxx,b.SJFCSJ,b.FCZDMC, b.SJDDSJ,b.DDZDMC,b.changefc from
|
|
|
|
|
(select distinct * from [temp].[dbo].[jy623_platematch])a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct * from TEMP21) b
|
|
|
|
|
ON a.platenum = b.CPH
|
|
|
|
|
where a.tjrlrtime >= b.changefc and a.tjrlrtime < b.SJDDSJ) c ---742555
|
|
|
|
|
|
|
|
|
|
/*配上方向的全量交易数据*/
|
|
|
|
|
select * into [temp].[dbo].[jy623_sxxmatch] from (
|
|
|
|
|
select * from (
|
|
|
|
|
select distinct a.*, b.XLMC,b.sxx,b.SJFCSJ,b.FCZDMC, b.SJDDSJ,b.DDZDMC from
|
|
|
|
|
(select distinct * from [temp].[dbo].[jy623_platematch]) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct * from temp22) b
|
|
|
|
|
on a.tjrlcardno = b.tjrlcardno and a.tjrlrtime = b.tjrlrtime and a.tjrlposid = b.tjrlposid and a.tjrlcdkind= b.tjrlcdkind and a.tjrlamt=b.tjrlamt) c
|
|
|
|
|
group by c.tjrlcardno,c.tjrlposid,c.tjrlrdate,c.tjrlrtime,c.DDZDMC,c.FCZDMC,c.platenum,c.SJDDSJ,c.SJFCSJ,c.SXX,c.tjrlamt,c.tjrlcdkind,
|
|
|
|
|
c.tjrlorgamt,c.tjrlposcardid,c.tjrlsdate,c.tjrlstatid,c.tjrlunitid,c.XLMC)d -----887667
|
|
|
|
|
|
|
|
|
|
/*检查为什么有的没有配上*/
|
|
|
|
|
--因为有的交易记录没有配上车牌
|
|
|
|
|
select count(*) from [temp].[dbo].[jy623_sxxmatch] where sxx is null and platenum is null ---5834
|
|
|
|
|
|
|
|
|
|
--交易记录中的车牌在电子路单中找不到
|
|
|
|
|
select * from [temp].[dbo].[jy623_sxxmatch] where sxx is null and
|
|
|
|
|
platenum in (
|
|
|
|
|
select a.platenum from
|
|
|
|
|
(select distinct platenum from [temp].[dbo].[jy623_sxxmatch] where sxx is null and platenum is not null) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct cph from [temp].[dbo].[dzld623]) b
|
|
|
|
|
on a.platenum = b.cph where b.cph is null) ---137834
|
|
|
|
|
|
|
|
|
|
--交易记录时间匹配不上
|
|
|
|
|
--存在车牌、pos、司售卡不一致
|
|
|
|
|
/*以上情况对应的电子路单记录*/
|
|
|
|
|
select * from [temp].[dbo].[dzld623] where cph in(
|
|
|
|
|
select distinct platenum from [temp].[dbo].[jy623_sxxmatch] where sxx is null and
|
|
|
|
|
platenum not in (
|
|
|
|
|
select a.platenum from
|
|
|
|
|
(select distinct platenum from [temp].[dbo].[jy623_sxxmatch] where sxx is null and platenum is not null) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct cph from [temp].[dbo].[dzld623]) b
|
|
|
|
|
on a.platenum = b.cph where b.cph is null) ) order by cph,sjfcsj
|
|
|
|
|
|
|
|
|
|
/*以上情况对应的交易记录*/
|
|
|
|
|
select * from [temp].[dbo].[jy623_sxxmatch] where sxx is null and
|
|
|
|
|
platenum not in (
|
|
|
|
|
select a.platenum from
|
|
|
|
|
(select distinct platenum from [temp].[dbo].[jy623_sxxmatch] where sxx is null and platenum is not null) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct cph from [temp].[dbo].[dzld623]) b
|
|
|
|
|
on a.platenum = b.cph where b.cph is null) order by platenum,tjrlrtime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-----------------挂站点------------------------*/
|
|
|
|
|
select * into [temp].[dbo].[623dlz] from
|
|
|
|
|
(
|
|
|
|
|
SELECT distinct * FROM [temp2].[dbo].[dlz1]
|
|
|
|
|
union
|
|
|
|
|
SELECT distinct * FROM [temp2].[dbo].[dlz2]
|
|
|
|
|
union
|
|
|
|
|
SELECT distinct * FROM [temp2].[dbo].[dlz3]) a ---2105897
|
|
|
|
|
|
|
|
|
|
---把行车方向不等于0/1的记录删除
|
|
|
|
|
delete from [temp].[dbo].[623dlz] where direction not in (0,1) --668
|
|
|
|
|
|
|
|
|
|
---GPS是断点采集,因此将到达时间前推5s,扩大时间切片范围
|
|
|
|
|
select * into temp31 from (
|
|
|
|
|
select a.*,(case when a.arrive=0 then DATEADD(ss,-5,a.gpstime) else a.gpstime end) as gpstime_change
|
|
|
|
|
from temp31 a) b --2105229
|
|
|
|
|
|
|
|
|
|
---首发站状态为离开的记录,对离开时间进行更新,避免在首发站提前上车刷卡的记录无法匹配的清况
|
|
|
|
|
update temp31 set gpstime_change = DATEADD(mi,-10,gpstime) where [LEVELS] = 1 and arrive = 1 ---65752
|
|
|
|
|
update temp31 set arrive = 0 where [LEVELS] = 1 and arrive = 1 ---65752
|
|
|
|
|
|
|
|
|
|
---按到站时间做切片,只保留arrive =0
|
|
|
|
|
select * into temp32 from (select * from temp32 where arrive = 0) a ---1139816
|
|
|
|
|
|
|
|
|
|
---对时间格式进行统一
|
|
|
|
|
select * into temp33 from
|
|
|
|
|
(select a.*,
|
|
|
|
|
substring(a.gpsdate,4,1)+substring(a.gpsdate,1,2)+substring(CONVERT(CHAR(8),a.gpstime_change,108),1,2)+substring(CONVERT(CHAR(8),a.gpstime_change,108),4,2)+substring(CONVERT(CHAR(8),a.gpstime_change,108),7,2)
|
|
|
|
|
as ddsj from temp32 a) b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---对时间进行错位补充
|
|
|
|
|
SELECT * INTO temp34 FROM (SELECT a.* , lead(ddsj, 1, 0) over(PARTITION BY vehicleid ORDER BY ddSJ) changeddsj FROM temp33 a) C ---1139816
|
|
|
|
|
|
|
|
|
|
select * into temp35 from(
|
|
|
|
|
select a.*,
|
|
|
|
|
substring(a.gpsdate,4,1)+substring(a.gpsdate,1,2)+substring(CONVERT(CHAR(8),a.temp,108),1,2)+substring(CONVERT(CHAR(8),a.temp,108),4,2)+substring(CONVERT(CHAR(8),a.temp,108),7,2) as temp2
|
|
|
|
|
from
|
|
|
|
|
(select b.*, DATEADD(mi,5,gpstime_change) as temp from temp34 b) a)c ---1139816
|
|
|
|
|
update temp35 set changeddsj = temp2 where changeddsj = '0' ---5354
|
|
|
|
|
update temp35 set changeddsj = substring(changeddsj,1,2)+'4'+substring(changeddsj,4,9) where ddsj > changeddsj
|
|
|
|
|
|
|
|
|
|
update temp35 set DIRECTION = '下行' where direction = '1'
|
|
|
|
|
update temp35 set DIRECTION = '上行' where direction = '0'
|
|
|
|
|
|
|
|
|
|
---匹配
|
|
|
|
|
select * into temp36 from
|
|
|
|
|
(select distinct [VEHICLEID],[VEHICLENUMBERING] ,[ROADSORT] ,[GPSDATE] ,[GPSTIME] ,[LEVELS] ,[DIRECTION] ,[ARRIVE] ,[SOURCE] ,[STOPREPORTINGTYPE] ,[SAVEDATE],[gpstime_change]
|
|
|
|
|
,[ddsj] ,[changeddsj] from temp35) a
|
|
|
|
|
|
|
|
|
|
select * into temp37 from
|
|
|
|
|
(
|
|
|
|
|
select a.* , b.roadsort,b.gpstime,b.levels from
|
|
|
|
|
(SELECT * FROM [temp].[dbo].[jy623_sxxmatch] ) a
|
|
|
|
|
left join
|
|
|
|
|
(select * from temp36) b
|
|
|
|
|
on a.platenum = b.vehicleid and a.sxx = b.direction
|
|
|
|
|
where a.tjrlrtime >= b.ddsj and a.tjrlrtime < b.changeddsj ) c ---719082 //718969
|
|
|
|
|
|
|
|
|
|
/*配上站点的全量交易数据*/
|
|
|
|
|
select * into [temp].[dbo].[jy623_stationmatch] from (
|
|
|
|
|
select distinct * from (
|
|
|
|
|
select distinct a.*, b.roadsort,b.gpstime,b.levels from
|
|
|
|
|
(select distinct * from [temp].[dbo].[jy623_sxxmatch]) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct * from temp37) b
|
|
|
|
|
on a.tjrlcardno = b.tjrlcardno and a.tjrlrtime = b.tjrlrtime and a.tjrlposid = b.tjrlposid and a.tjrlcdkind= b.tjrlcdkind and a.tjrlamt=b.tjrlamt) c)d
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
select * from (
|
|
|
|
|
select a.platenum , b.vehicleid from
|
|
|
|
|
(select distinct platenum from [temp].[dbo].[jy623_stationmatch] where sxx is not null and roadsort is null) a
|
|
|
|
|
left join
|
|
|
|
|
(select distinct vehicleid from [temp].[dbo].[623dlz])b
|
|
|
|
|
on a.platenum = b.VEHICLEID) c
|
|
|
|
|
where c.vehicleid is null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
select * from [temp].[dbo].[jy623_stationmatch] where sxx is not null and roadsort is null
|
|
|
|
|
select count(*) from [temp].[dbo].[jy623_sxxmatch] where sxx is not null
|
|
|
|
|
select distinct platenum from [temp].[dbo].[jy623_stationmatch] where sxx is not null and roadsort is null
|
|
|
|
|
|
|
|
|
|
select * into temp555 from
|
|
|
|
|
(select * from [temp].[dbo].[jy623_stationmatch] where roadsort = '55') a
|
|
|
|
|
|
|
|
|
|
select * into temp556 from (
|
|
|
|
|
select a.*,b.[站点名称] from
|
|
|
|
|
(select * from temp555) a
|
|
|
|
|
left join
|
|
|
|
|
(SELECT * FROM [temp2].[dbo].[Sheet1$]) b
|
|
|
|
|
on a.sxx = b.[空] and a.levels = b.[站级]) d
|
|
|
|
|
|
|
|
|
|
select distinct [站点名称] ,sxx, count(*) as num from temp556 group by [站点名称],sxx order by num desc
|
|
|
|
|
|
|
|
|
|
select sum()* from temp556
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|