0
我有以下查詢:爲什麼我收到重複的記錄下面的SQL查詢
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 [email protected]
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 [email protected]
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。我在查詢中做了什麼錯誤?