Sql 如何在CTE中添加计数/总和和分组依据
只是一个关于在飞行高度层上显示一行和显示该航班上有多少机组人员的计数的问题 我想更改输出,使其在飞行高度层仅显示一条记录,并显示另外两列。一列(CAB增量W)是具有Sql 如何在CTE中添加计数/总和和分组依据,sql,sql-server,Sql,Sql Server,只是一个关于在飞行高度层上显示一行和显示该航班上有多少机组人员的计数的问题 我想更改输出,使其在飞行高度层仅显示一条记录,并显示另外两列。一列(CAB增量W)是具有'CREWTYPE'='F'的机组成员计数,另一列(cockpitcrew)是具有'CREWTYPE'='C'的机组成员计数 因此,查询结果应该如下所示: Flight DepartureDate DepartureAirport CREWBASE CockpitCrew CabinCrew LS361 2016-05-1
'CREWTYPE'='F'
的机组成员计数,另一列(cockpitcrew)是具有'CREWTYPE'='C'的机组成员计数
因此,查询结果应该如下所示:
Flight DepartureDate DepartureAirport CREWBASE CockpitCrew CabinCrew
LS361 2016-05-19 BFS BFS 0 3
请帮我调整一下下面的查询:
WITH CTE AS (
SELECT cd.*, c.*, l.Carrier, l.FlightNumber, l.Suffix, l.ScheduledDepartureDate, l.ScheduledDepartureAirport
FROM
(SELECT *, ROW_NUMBER() OVER(PARTITION BY LegKey ORDER BY UpdateID DESC) AS RowNumber FROM Data.Crew) c
INNER JOIN
Data.CrewDetail cd
ON c.UpdateID = cd.CrewUpdateID
AND cd.IsPassive = 0
AND RowNumber = 1
INNER JOIN
Data.Leg l
ON c.LegKey = l.LegKey
)
SELECT
sac.Airline + CAST(sac.FlightNumber AS VARCHAR) + sac.Suffix AS Flight
, sac.DepartureDate
, sac.DepartureAirport
, sac.CREWBASE
, sac.CREWTYPE
, sac.EMPNO
, sac.FIRSTNAME
, sac.LASTNAME
, sac.SEX
FROM
Staging.SabreAssignedCrew sac
LEFT JOIN CTE cte
ON sac.Airline + CAST(sac.FlightNumber AS VARCHAR) + sac.Suffix = cte.Carrier + CAST(cte.FlightNumber AS VARCHAR) + cte.Suffix
AND sac.DepartureDate = cte.ScheduledDepartureDate
请试试这个
SELECT Flight,
DepartureDate,
DepartureAirport,
CREWBASE,
SUM(CASE WHEN CREWTYPE = 'F' THEN 1 ELSE 0 END) AS CabinCrew ,
SUM(CASE WHEN CREWTYPE = 'C' THEN 1 ELSE 0 END) AS CockpitCrew
FROM @Table
GROUP BY Flight, DepartureDate, DepartureAirport, CREWBASE
请试试这个
SELECT Flight,
DepartureDate,
DepartureAirport,
CREWBASE,
SUM(CASE WHEN CREWTYPE = 'F' THEN 1 ELSE 0 END) AS CabinCrew ,
SUM(CASE WHEN CREWTYPE = 'C' THEN 1 ELSE 0 END) AS CockpitCrew
FROM @Table
GROUP BY Flight, DepartureDate, DepartureAirport, CREWBASE
请试试这个:
select Flight, DepartureDate, DepartureAirport,CREWBASE,
count(case when CREWTYPE='F' then 1 end ) as CabinCrew,count(case when CREWTYPE='C' then 1 end ) as CockpitCrew
from Staging.SabreAssignedCrew
group by Flight, DepartureDate, DepartureAirport,CREWBASE
请试试这个:
select Flight, DepartureDate, DepartureAirport,CREWBASE,
count(case when CREWTYPE='F' then 1 end ) as CabinCrew,count(case when CREWTYPE='C' then 1 end ) as CockpitCrew
from Staging.SabreAssignedCrew
group by Flight, DepartureDate, DepartureAirport,CREWBASE