次のクエリがあります。
SELECT
l.ModelTypeIndexNumber AS [Model Index Number],
l.TestGroupname AS [Test Group],
lf.CE_Fuel AS [Fuel],
CASE
WHEN lf.Electricity = '' THEN '(missing)' \
ELSE lf.Electricity
END AS [Electric Motor Energy Source],
tg.TG_Fuel + ', EL' AS [TG Fuel Sources],
CASE
WHEN l.LabelCalculationApproachIdentifier ='PHEV' THEN 'PHEV'
ELSE '(Not PHEV)'
END AS [Label Calculation Approach]
FROM Relational.Label l
INNER JOIN (
SELECT
lbl.SubmissionId,
lbl.ModelTypeIndexNumber,
COUNT(*) AS lblFuelCount,
MAX(CASE
WHEN fu.FuelUsageIdentifier <>'EL' THEN fu.FuelUsageIdentifier
ELSE NULL
END) AS CE_Fuel,
MAX(CASE
WHEN fu.FuelUsageIdentifier ='EL' THEN fu.FuelUsageIdentifier
ELSE ''
END) AS Electricity
FROM Relational.Label lbl
INNER JOIN Relational.FuelUsage fu
ON lbl.LabelId=fu.LabelId
WHERE lbl.SubmissionId=@SubmissionId
GROUP BY lbl.SubmissionId, lbl.ModelTypeIndexNumber
) AS lf
ON l.SubmissionId=lf.SubmissionId
INNER JOIN (
SELECT
rtg.SubmissionId,
rtg.TestGroupName,
MAX(CASE
WHEN ds.FuelId <> 'EL' THEN ds.FuelId
ELSE NULL
END) AS TG_Fuel
FROM Relational.DriveSource ds
INNER JOIN Relational.TestGroup rtg
ON ds.TestGroupId=rtg.TestGroupId
WHERE rtg.SubmissionId=@SubmissionId
GROUP BY rtg.SubmissionId, rtg.TestGroupName
HAVING COUNT(*)>1 AND MAX(CASE WHEN ds.FuelId ='EL' THEN 1 ELSE 0 END) = 1
) AS tg
ON lf.SubmissionId=tg.SubmissionId
AND l.TestGroupName = tg.TestGroupName
WHERE (lf.Electricity = '' AND l.LabelCalculationApproachIdentifier = 'PHEV')
次の出力が生成されます。
Model Index Number Test Group Fuel TG Fuel Source(s) Label Calculation Approach
19 ABC.1987 GP DX, EL PHEV
19 XYZ.1989 DM DS, EL PHEV
20 ABC.1987 GP DX. EL PHEV
20 XYZ.1989 DM DS, EL PHEV
しかし、私は次の結果を期待しています:
Model Index Number Test Group Fuel TG Fuel Source(s) Label Calculation Approach
19 ABC.1987 GP DX, EL PHEV
20 XYZ.1989 DM DS, EL PHEV
重複はしたくありません。おそらく参加の問題。DISTINCTでやってみました。クエリで何が間違っていますか?