Reputation: 11
I would like to simplify this query if possible.
SELECT
MAX(tDateTimeOfSurvey)
FROM
Stocks.dbo.tblSurvey
WHERE
(
(SELECT ISNULL(SUM(tWetTons), 0)
FROM Stocks.dbo.tblSurvey
WHERE tStockAreaID = 3
AND tDateTimeOfSurvey BETWEEN '20140201' AND '20140228') +
(SELECT ISNULL(SUM(tWetTons), 0)
FROM Stocks.dbo.tblSurvey
WHERE tStockAreaID = 103
AND tDateTimeOfSurvey BETWEEN '20140201' AND '20140228') +
(SELECT ISNULL(SUM(tWetTons), 0)
FROM Stocks.dbo.tblSurvey
WHERE tStockAreaID = 181
AND tDateTimeOfSurvey BETWEEN '20140201' AND '20140228')
) > 0
AND tStockAreaID IN (3,103,181) -- RAS, SOIL, DORB
AND tDateTimeOfSurvey BETWEEN '20140201' AND '20140228'
Many thanks, Pierre
Upvotes: 0
Views: 165
Reputation: 18629
Please try:
SELECT MAX(tDateTimeOfSurvey)
FROM Stocks.dbo.tblSurvey
WHERE
tStockAreaID IN (3,103,181) AND
tDateTimeOfSurvey BETWEEN '20140201' AND '20140228'
HAVING SUM(tWetTons)>0
Upvotes: 1