2014-02-25 58 views
0

我正在努力研究如何根據兩行之間的差異輕鬆選擇記錄。SQL根據兩行之間的差異進行選擇

我有一張這樣的桌子。

Time | Store | Code | %  | Ranked | 
------------------------------------------ 
13:50 | Swindon | 33 | 32.578 | 1  | 
13:50 | Reading | 31 | 29.438 | 2  | 
13:50 | Bath | 32 | 28.221 | 3  | 
14:50 | Swindon | 33 | 32.100 | 1  | 
14:50 | Reading | 32 | 30.987 | 2  | 
14:50 | Bath | 32 | 28.335 | 3  | 

我需要根據商店在不同時間的百分比差異來做不同的報表。

一個例子。

選擇所有商店從商店排名1,其中>=至3所以在這種情況下,它只能選擇13:50斯溫頓因爲在%不同的是剛剛超過3%,位居第2

還有其他的變化,但我相信,一旦我有一個答案,我可以自己找出其餘的。

我知道正常的選擇語句,但我想我必須做一個加入,但不知道如何。

+1

你的問題對我來說並不完全清楚。你想檢查百分比之間的時間間隔,並作出決定? –

+0

請改善您的問題。它非常混亂。您的查詢條件指定'排名',但它提示'%'。 –

+0

'Join'用於查看來自2個或更多表格的數據,您可能只是想從我所瞭解的問題中找到WHERE條件和適當的排序順序。正如帕特里克所說,這不是很清楚。 –

回答

0

基於以上我提供的信息假設是這樣的:

select * 
from table t1 
inner join table t2 on t1.Time = t2.Time and t1.Ranked = 1 and t2.Ranked = 2 
where (t1.% - t2.%) > 3 

的列名是有點過了,但我想排名是基於時間。

+0

謝謝你這個工作很好,但在你的情況和下面的一個,我不得不交換連接的順序,以獲得排名第一的查詢。但我真的很感謝幫助。 – user2982349

+0

對不起,我剛剛意識到查詢拉出兩個記錄不只是第一次排名,這與下面的查詢也是如此。 – user2982349

+0

我不明白,它工作與否?這兩個查詢的行爲相同 – Boklucius

0
SELECT R1.store, 
     R1.timestamp 
FROM store_tbl R1, 
     store_tbl R23 
WHERE R1.ranked = 1 
     AND R23.ranked = 2 
     AND R1.timestamp = R23.timestamp 
     AND (R1.percentage - R23.percentage) > 3 
+0

謝謝你和上面的查詢正常工作,除了上面我不得不交換From語句的順序。 – user2982349

+0

對不起,你可以給我任何進一步的幫助,因爲它拉出第一和第二的排名,我似乎無法獲得第一名。我試圖使用更多的AND子句,但這仍然不起作用。 – user2982349

+0

對不起,我沒有看到「Store」修正,但MS SQL服務器似乎無法識別該命令。 – user2982349