2017-07-31 2 views
0

私はまた、子テーブルで参照されているvehicleIdの数を取得する必要があり、次のSQL Serverクエリを記述しようとしている、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が

012のようなVehicleToBedConfigテーブルにマッピングされている車両IDのカウントがある:私は上記のクエリからこれらの列の詳細をプッシュする方法を探しています

私は1つのクエリが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

のカウントの詳細を取り込む持つように最初に2番目のクエリを挿入しない方法を教えてくださいすることはVehicleToBedConfigでPKを試みるある

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

明示的なJOIN構文を使用することをお勧めします。