Sql d查询似乎给了我一行三个驾驶小时的总和。可以为三个驱动程序ID中的每一个返回三个sum()小时吗?@KirbyL.Wallace很抱歉没有响应-这里已经是晚上了。查询只是缺少必要的GROUP BY子句-对此表示抱歉。参见我的编辑(另请注意添加到最终选择)的
Sql d查询似乎给了我一行三个驾驶小时的总和。可以为三个驱动程序ID中的每一个返回三个sum()小时吗?@KirbyL.Wallace很抱歉没有响应-这里已经是晚上了。查询只是缺少必要的GROUP BY子句-对此表示抱歉。参见我的编辑(另请注意添加到最终选择)的,sql,sql-server,tsql,Sql,Sql Server,Tsql,d查询似乎给了我一行三个驾驶小时的总和。可以为三个驱动程序ID中的每一个返回三个sum()小时吗?@KirbyL.Wallace很抱歉没有响应-这里已经是晚上了。查询只是缺少必要的GROUP BY子句-对此表示抱歉。参见我的编辑(另请注意添加到最终选择)的R.Driver\u ID)。 declare @day int = 14689; -- Today's "day" (# of days from 1/1/1980) declare @dep varchar(3) = 'BXBU'; dec
d查询似乎给了我一行三个驾驶小时的总和。可以为三个驱动程序ID中的每一个返回三个sum()小时吗?@KirbyL.Wallace很抱歉没有响应-这里已经是晚上了。查询只是缺少必要的
GROUP BY
子句-对此表示抱歉。参见我的编辑(另请注意添加到最终选择)的R.Driver\u ID
)。
declare @day int = 14689; -- Today's "day" (# of days from 1/1/1980)
declare @dep varchar(3) = 'BXBU';
declare @carrier int = 1;
declare @flt int = 703;
declare @legcd char(1) = '';
SELECT r.DRIVER_ID
FROM ROSTER r
JOIN CRROUTE cr ON (cr.CDATE = r.DUTYDAY
and cr.CROUTE = r.DUTYNO)
JOIN CrewLeg cl on (cl.CDATE = cr.CDATE
and cl.croute = cr.CROUTE
and cl.DAY = r.LEG_DAY
and cl.DEP = r.LEG_DEP
and cl.CARRIER = r.LEG_CARRIER
and cl.flt = r.LEG_FLT
and cl.LEGCD = r.LEG_LEGCD)
WHERE r.leg_day = @day
AND r.leg_dep = @dep
AND r.leg_CARRIER = @carrier
AND r.leg_flt = @flt
AND r.leg_legcd = @legcd
AND r.POS <= 2
GROUP BY r.ID,r.leg_day, r.leg_carrier, r.leg_flt, r.leg_legcd
1109
1209
1310
SELECT SUM(LT.BLON - LT.BLOF) as 'HOURSINTYPE'
FROM ROSTER R
INNER JOIN CREWLEG CL on R.LEG_DAY = CL.DAY AND R.LEG_CARRIER = CL.CARRIER AND R.LEG_FLT = CL.FLT AND R.LEG_DEP = CL.DEP AND R.LEG_LEGCD = CL.LEGCD AND R.DUTYDAY = CL.CDATE AND R.DUTYNO = CL.CROUTE
INNER JOIN LEGMAIN LM on R.LEG_DAY = LM.DAY AND R.LEG_CARRIER = LM.CARRIER AND R.LEG_FLT = LM.FLT AND R.LEG_DEP = LM.DEP AND R.LEG_LEGCD = LM.LEGCD
INNER JOIN LEGTIMES LT on R.LEG_DAY = LT.DAY AND R.LEG_CARRIER = LT.CARRIER AND R.LEG_FLT = LT.FLT AND R.LEG_DEP = LT.DEP AND R.LEG_LEGCD = LT.LEGCD
WHERE R.Driver_ID = {{Each_ID_From_1st_Query}} AND LEG_DAY <= @day AND PAX = 0 AND R.LEG_FLT > 0 AND LT.BLON != 0 AND LM.AC IN(8,10)
ID Hours
----- -----
1109 109
1209 530
1310 76
WITH cte1 AS (
FIRST QUERY
), cte2 AS (
SECOND QUERY
) SELECT -- uhm.... what? I can't get the ID from cte1 into cte2.
(FIRST QUERY) a
JOIN
(SECOND QUERY) b
WHERE a.Driver_ID = b.Driver_ID
declare @day int = 14689; -- Today's "day" (# of days from 1/1/1980)
declare @dep varchar(3) = 'BXBU';
declare @carrier int = 1;
declare @flt int = 703;
declare @legcd char(1) = '';
WITH CTE AS (
SELECT r.DRIVER_ID
FROM ROSTER r
JOIN CRROUTE cr ON (cr.CDATE = r.DUTYDAY
and cr.CROUTE = r.DUTYNO)
JOIN CrewLeg cl on (cl.CDATE = cr.CDATE
and cl.croute = cr.CROUTE
and cl.DAY = r.LEG_DAY
and cl.DEP = r.LEG_DEP
and cl.CARRIER = r.LEG_CARRIER
and cl.flt = r.LEG_FLT
and cl.LEGCD = r.LEG_LEGCD)
WHERE r.leg_day = @day
AND r.leg_dep = @dep
AND r.leg_CARRIER = @carrier
AND r.leg_flt = @flt
AND r.leg_legcd = @legcd
AND r.POS <= 2
GROUP BY r.ID,r.leg_day, r.leg_carrier, r.leg_flt, r.leg_legcd
)
SELECT R.Driver_ID, SUM(LT.BLON - LT.BLOF) as 'HOURSINTYPE'
FROM ROSTER R
INNER JOIN CREWLEG CL on R.LEG_DAY = CL.DAY AND R.LEG_CARRIER = CL.CARRIER AND R.LEG_FLT = CL.FLT AND R.LEG_DEP = CL.DEP AND R.LEG_LEGCD = CL.LEGCD AND R.DUTYDAY = CL.CDATE AND R.DUTYNO = CL.CROUTE
INNER JOIN LEGMAIN LM on R.LEG_DAY = LM.DAY AND R.LEG_CARRIER = LM.CARRIER AND R.LEG_FLT = LM.FLT AND R.LEG_DEP = LM.DEP AND R.LEG_LEGCD = LM.LEGCD
INNER JOIN LEGTIMES LT on R.LEG_DAY = LT.DAY AND R.LEG_CARRIER = LT.CARRIER AND R.LEG_FLT = LT.FLT AND R.LEG_DEP = LT.DEP AND R.LEG_LEGCD = LT.LEGCD
WHERE R.Driver_ID IN (SELECT DRIVER_ID FROM CTE)
AND LEG_DAY <= @day
AND PAX = 0
AND R.LEG_FLT > 0
AND LT.BLON != 0
AND LM.AC IN(8,10)
GROUP BY R.Driver_ID
declare @day int = 14689; -- Today's "day" (# of days from 1/1/1980)
declare @dep varchar(3) = 'BXBU';
declare @carrier int = 1;
declare @flt int = 703;
declare @legcd char(1) = '';
WITH cte AS (
SELECT r.DRIVER_ID
FROM ROSTER r
JOIN CRROUTE cr ON (cr.CDATE = r.DUTYDAY and cr.CROUTE = r.DUTYNO)
JOIN CrewLeg cl ON (cl.CDATE = cr.CDATE and cl.croute = cr.CROUTE and cl.DAY = r.LEG_DAY and cl.DEP = r.LEG_DEP and cl.CARRIER = r.LEG_CARRIER and cl.flt = r.LEG_FLT and cl.LEGCD = r.LEG_LEGCD)
WHERE r.leg_day = @day
AND r.leg_dep = @dep
AND r.leg_CARRIER = @carrier
AND r.leg_flt = @flt
AND r.leg_legcd = @legcd
AND r.POS <= 2
GROUP BY r.ID,r.leg_day, r.leg_carrier, r.leg_flt, r.leg_legcd
)
SELECT cte.*, hours.*
FROM cte
JOIN (
SELECT SUM(LT.BLON - LT.BLOF) as 'HOURSINTYPE'
FROM ROSTER R
INNER JOIN CREWLEG CL on R.LEG_DAY = CL.DAY AND R.LEG_CARRIER = CL.CARRIER AND R.LEG_FLT = CL.FLT AND R.LEG_DEP = CL.DEP AND R.LEG_LEGCD = CL.LEGCD AND R.DUTYDAY = CL.CDATE AND R.DUTYNO = CL.CROUTE
INNER JOIN LEGMAIN LM on R.LEG_DAY = LM.DAY AND R.LEG_CARRIER = LM.CARRIER AND R.LEG_FLT = LM.FLT AND R.LEG_DEP = LM.DEP AND R.LEG_LEGCD = LM.LEGCD
INNER JOIN LEGTIMES LT on R.LEG_DAY = LT.DAY AND R.LEG_CARRIER = LT.CARRIER AND R.LEG_FLT = LT.FLT AND R.LEG_DEP = LT.DEP AND R.LEG_LEGCD = LT.LEGCD
WHERE LEG_DAY <= @day AND PAX = 0 AND R.LEG_FLT > 0 AND LT.BLON != 0 AND LM.AC IN(8,10)
GROUP BY r.DRIVER_ID
) hours ON cte.DRIVER_ID = hours.DRIVER_ID