我在SQL Server 2005中的表變量:選擇從表變量的最高得分結果在SQL
DECLARE @results TABLE (id int IDENTITY(1,1),
customerId int,
salesId int,
score int,
lastServiceDate datetime,
PRIMARY KEY(id));
我需要一個有效的方式來擦桌子或訪問表的結果,所以它每個salesId只返回1個結果。如果每個salesId的結果不止一個,它應顯示最高分數的行,或者在平行的情況下顯示Customer表中最近一次的lastServiceDate。
現在,我的測試數據是這樣的:
id customerId salesId score lastServiceDate
1 950 418 3 2009-08-09 00:00:00.000
2 951 418 3 2009-08-19 00:00:00.000
3 952 418 1 2009-08-22 00:00:00.000
4 953 419 2 2009-08-15 00:00:00.000
我想要的東西,將返回,在這種情況下,只是兩行 - ID 2(最高分/ lastServiceDate爲salesId 418)和id 4(僅針對salesId 419的結果)。最後,我需要獲取此表中的數據,並將其插入到JobResult表中,並從這些限制中選擇@results中的customerId和salesId。
(這完成在https://stackoverflow.com/questions/1343647問了一個問題。)
爲什麼值得這個是「表變量」,由@標識標識,而#結果是一個臨時表。 @在內存中,#在磁盤上。 –
因此,無論客戶是誰,都希望每個salesId有1行?如果salesId 3在同一天爲兩個客戶提供服務並且每個客戶都獲得完全相同的分數,該怎麼辦?什麼應該插入到你的JobResult表中? –