我编写了一个查询,该查询从几个数据源构建一个小型信息表,它使用自制表来引用最终组的车辆模型,通过该表可以查看数据的方式但是,当我按车辆分组时,它会忽略子组中子查询列中的数字,即如果我按前缀分组显示正确的数字,则按车辆分组隐藏一些数据。
前缀可能与几种类似的车型相关,因此需要按车辆分组。任何人都可以从下面的SQL查询中轻松地看到我做错了什么。
SELECT Vehicle, COUNT(`Chassis-No`) AS Stock,
ROUND((100/COUNT(`Chassis-No`)) * SUM(CASE WHEN `Vehicle Age` > '182' THEN 1 ELSE 0 END),1) AS Perc6Months,
ROUND((100/COUNT(`Chassis-No`)) * SUM(CASE WHEN `Vehicle Age` > '365' THEN 1 ELSE 0 END),1) AS Perc12Months,
(SELECT COUNT(VIN_Prefix) FROM Orderdownload
INNER JOIN VehicleMatrix ON (`VIN_Prefix` LIKE 'S%' AND Prefix = LEFT(`VIN_Prefix`,2)) OR (`VIN_Prefix` NOT LIKE 'S%' AND Prefix = LEFT(`VIN_Prefix`,1)) WHERE DealerCode = 'AA12345' AND `VIN_Prefix` = IF(LEFT(`Chassis-No`,1)='S',LEFT(`Chassis-No`,2),LEFT(`Chassis-No`,1))) As Qty
FROM DealerAgedStock
INNER JOIN VehicleMatrix AS VM
ON (`Chassis-No` LIKE 'S%' AND Prefix = LEFT(`Chassis-No`,2)) OR (`Chassis-No` NOT LIKE 'S%' AND Prefix = LEFT(`Chassis-No`,1))
WHERE `DL Dealer Code` = 'AA12345'
GROUP BY Vehicle
在车辆上分组我得到以下内容:
Vehicle | Perc6Months | Perc12Months | Qty
Mondeo | 37.5 | 0 | 2
在前缀上分组我得到以下内容:
VIN_Prefix | Perc6Months | Perc12Months | Qty
S1 | 25 | 0 | 2
S2 | 50 | 0 | 2
理想情况下,它应该是这样的:
Vehicle | Perc6Months | Perc12Months | Qty
Mondeo | 37.5 | 0 | 4
S1和S2相对于Vehicle Mondeo,因此它给了我第一个子查询实例,而不是将它们加在一起。
我的问题是:为什么Group By没有从子查询中正确地添加数字?我需要它来添加它们以获得正确的数字......