2017-07-31 29 views
0

我试着写了下面的SQL Server查询,在这里我也需要获取的vehicleId是子表中被提及的次数,SQL查询来获取对关联表计数

select 
    BV.[BaseVehicleId], BV.[MakeId], MK.[MakeName], BV.[ModelId], 
    MD.[ModelName], V.[VehicleId], V.[SubModelId], SubMD.[SubModelName], 
    V.[RegionId], V.PublicationStageId, 
    V.[LastUpdateDate], V.[InsertDate], V2BedCount, V2BodyCount, 
    V2BrakeCount, V2DriveCount, V2EngineCount,V2MfrCount, V2SpringCount, 
    V2SteeringCount, V2TransmissionCount, V2WheelCount 
from 
    [dbo].[BaseVehicle] BV, 
    [dbo].[Make] MK, 
    [dbo].[Model] MD, 
    [dbo].[SubModel] SubMD, 
    [dbo].[VehicleToBedConfig] V2Bed, 
    [dbo].[VehicleToBodyStyleConfig] V2Body, 
    [dbo].[VehicleToBrakeConfig] V2Brake, 
    [dbo].[VehicleToDriveType] V2Drive, 
    [dbo].[VehicleToEngineConfig] V2Engine, 
    [dbo].[VehicleToMfrBodyCode] V2Mfr, 
    [dbo].[VehicleToSpringTypeConfig] V2Spring, 
    [dbo].[VehicleToSteeringConfig] V2Steering, 
    [dbo].[VehicleToTransmission] V2Transmission, 
    [dbo].[VehicleToWheelBase] V2Wheel, 
    [dbo].[Vehicle] V 
where 
    V.[PublicationStageId] = '4' 
    and V.[DeleteDate] IS NULL 
    and BV.[BaseVehicleId] = V.[BaseVehicleId] 
    and MK.[MakeId] = BV.[MakeId] 
    and MD.[ModelId] = BV.[ModelId] 
    and V.[SubModelId] = SubMD.[SubModelId] 
    and V.[VehicleId] = V2Bed.[VehicleId] 
    and V.[VehicleId] = V2Body.[VehicleId] 
    and V.[VehicleId] = V2Brake.[VehicleId] 
    and V.[VehicleId] = V2Drive.[VehicleId] 
    and V.[VehicleId] = V2Engine.[VehicleId] 
    and V.[VehicleId] = V2Mfr.[VehicleId] 
    and V.[VehicleId] = V2Spring.[VehicleId] 
    and V.[VehicleId] = V2Steering.[VehicleId] 
    and V.[VehicleId] = V2Transmission.[VehicleId] 
    and V.[VehicleId] = V2Wheel.[VehicleId] 

我正在寻找一种方式来从上述查询推动这些列中的细节:

V2BedCount, V2BodyCount, V2BrakeCount, 
V2DriveCount, V2EngineCount, 
V2MfrCount, V2SpringCount, V2SteeringCount, V2TransmissionCount, 
V2WheelCount 

这里V2BedCount是映射与VehicleToBedConfig表像

012车辆的ID的计数

请让我知道我怎么插入第二个查询中第一个有一个查询填充计数的细节,所有这些列

V2BedCount, V2BodyCount, V2BrakeCount, 
V2DriveCount, V2EngineCount, 
V2MfrCount, V2SpringCount, V2SteeringCount, V2TransmissionCount, 
V2WheelCount 
+1

[踢坏的习惯:使用旧式JOIN - Aaron Bertrand](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) – SqlZim

回答

0

假设IdVehicleToBedConfig一个PK尝试

COUNT(DISTINCT V2Bed.Id) OVER(PARTITION BY V.VehicleId) V2BedCount, 
... 

我建议你使用明确的JOIN语法。