我有一个包含以下列的表:
plantId (pk)
unitId
maxCapacity
numberOfPlants
geographicalArea
agreementStart
agreementEnd
plantType
该表包含以下数据:
1, A1, 10, 1, 3, 2013-01-01, 2013-12-31
2, A2, 10, 1, 3, 2013-01-01, 2013-12-31
3, A1, 10, 1, 3, 2013-03-01, 2013-12-31
我想像这样查询我的表:
SELECT DISTINCT
plantType,
geographicalArea,
sum(maxCapacity) as maxCapacity,
sum(numberOfPlants) as numberOfPlants,
count(unitId) as idCount
FROM
tbl_plant
WHERE
(agreementStart <= '2013-11-28' AND
agreementEnd >= '2013-11-28') AND
plantType <> '0' AND
plantType = '2' AND
geographicalArea = '3'
GROUP BY
plantType, geographicalArea
只要结果集中每行只返回一个唯一unitId
,此查询就可以正常运行。但是,如果第二次返回相同的unitId
(请参阅上面的A1
),我不希望sum(maxCapacity)
和sum(numberOfPlants)
第二次包含总和,因为它有已包括它。
有关我如何更改此查询的任何想法?
答案 0 :(得分:1)
使用内部查询来删除重复
SELECT plantType, geographicalArea, sum(maxCapacity) as maxCapacity, sum(numberOfPlants) as numberOfPlants, count(unitId) as idCount
FROM tbl_plant
WHERE plantId in (
SELECT MAX(plantId)
FROM tbl_plant
WHERE (agreementStart <= '2013-11-28' AND agreementEnd >= '2013-11-28')
AND plantType <> '0'
AND plantType = '2'
AND geographicalArea = '3'
GROUP BY unitId
)
GROUP BY plantType, geographicalArea