【发布时间】:2014-01-10 22:31:05
【问题描述】:
我确实使用了搜索,但少数结果似乎没有回答我的具体问题(或者我的 sql 技能不足以将答案应用于我的场景)
我有需要加入的表格。上下文是一个交付业务。一张表包含交付周期时间表。我需要从这张表中获取客户注册每周交货的日期。这是在帐号上加入的。
另一个表包含,帐号,交货日期实例等
我要做的是提取过去 6 周内每个帐号的平均交货次数。但仅适用于开始日期在 6 到 10 周之前的帐户。
我使用的代码似乎恢复了正确的日期范围,但是,我需要每个帐号一行,以及 6 周期间的平均交付次数。我正在使用的代码没有正确执行此操作。
非常感谢任何帮助。
谢谢
select mov.AccountNumber,
sch.contractStart,
mov.TypeOfMovement,
mov.Outlet,
mov.RoundName,
mov.VehicleType,
avg(mov.NumberofItems)
FROM [round_movements]mov
left outer join [schedule]sch on sch.AccountNumber=
mov.AccountNumber
where mov.outlet='County'
and DATEDIFF(week, sch.ContractStart,GETDATE()) in(10,9,8,7,6)
and DATEDIFF(week, mov.RoundDate,GETDATE()) in (6,5,4,3,2,1,0)
group by
mov.AccountNumber,
mov.RoundName,
sch.contractStart,
mov.TypeOfMovement,
mov.Outlet,
mov.VehicleType,
mov.NumberofItems
order by mov.AccountNumber
上面代码的结果:
════════════════════════════════════════════════════════════════════════════════════════╗
║ AccountNumber contractStart Outlet RoundName VehicleType Avg No of Items ║
╠════════════════════════════════════════════════════════════════════════════════════════╣
║ 4000461 27/11/2013 town1 E4 (Wednesday) sprinter 1 ║
║
║ 6382401 29/10/2013 town2 E1 (Thursday) sprinter 2 ║
║ 6382401 29/10/2013 town2 E1 (Thursday) sprinter 2 ║
╚════════════════════════════════════════════════════════════════════════════════════════╝
预期结果:
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ AccountNumber contractStart Outlet RoundName VehicleType Avg No Items ║
╠═════════════════════════════════════════════════════════════════════════════════════╣
║ 4000461 27/11/2013 town 1 E4 (Wednesday) sprinter 1 ║
║ 6382401 29/10/2013 town2 E1 (Thursday) sprinter 2 ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
Rs 建议进行以下更改后的结果:
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ AccountNumber contractStart Outlet RoundName VehicleType Avg No Items ║
╠═════════════════════════════════════════════════════════════════════════════════════╣
║
4000461 27/11/2013 Bristol E4 (Wednesday) RCV 1
6382401 29/10/2013 Bristol E1 (Thursday) RCV 2
6382401 29/10/2013 Bristol E1 (Thursday) RCV 2
║
╚═════════════════════════════════════════════════════════════════════════════════════╝
【问题讨论】:
-
按 AccountNUMer、contractStart、outlet、roundname 分组
-
我添加了 sql-server 标签,因为查询语法强烈建议使用 SQL Server。
-
对不起。我正在使用 SQL Server 2008 R2。谢谢。
-
从按列分组的列表中删除 mov.NumberofItems
-
谢谢rs。我尝试删除它,但每个帐号仍有多行:(
标签: sql sql-server join group-by