您好,大師我需要您的幫助。如何在返回兩列的子查詢中使用運算符IN
具有表:
DataCollection
==================
PK Code
smallint RestaurantCode
smallint Year
tinyint Month
money Amount
money AccumulativeMonthsAmount
...
我需要爲LastMonth的AccumulateAmount每個餐廳。
首先,我拿到每餐廳上個月的「當年」(這種情況下):
SELECT RestaurantCode, MAX(Month) as Month FROM DataCollection
WHERE (Year >= 2012 AND YEAR <= 2012) GROUP BY RestaurantCode
現在我想使用它作爲子查詢,以獲得最後 - AccumulativeMonthsAmount:
SELECT AccumulativeMonthsAmount FROM DataCollection
WHERE (RestaurantCode, Month)
IN (SELECT RestaurantCode, MAX(Month) as Month FROM DataCollection
WHERE (Year >= 2012 AND YEAR <= 2012) GROUP BY RestaurantCode)
但是,運營商IN,不工作,我應該怎麼做?
按年份和月份分類樣本數據:
RestCode Amount Accumulative Year Month
123 343.3 345453.65 2012 12
123 124.7 345329.00 2012 11
...
122 312.2 764545.00 2012 12
122 123.4 764233.00 2012 11
...
999 500.98 2500.98 2012 6
999 100.59 2000.00 2012 5
...
我想獲得累計對每家餐廳的最後一個月:
RestCode Accumulative Month
123 345453.65 12
122 764545.00 12
99 2500.98 6
...
您使用合適的JOIN,而不是使用子查詢。 –
似乎我失去了秒數,在哪裏可以回答問題。 –
似乎是一個經典的['最大 - 每組 - >](http://stackoverflow.com/questions/tagged/greatest-n-per-group+sql-server)問題。 –