2013-01-09 25 views
1

我使用的是舊版本的sybase,它沒有鉛等關鍵字。消除所有行,直到達到某個值

我有一個如下所示的表格。

 
Type Row Time  Quantity   
cat1 1  10:01:01.000  50   
cat1 2  10:01.01.001  0   
cat1 3  10:01:01.002 1000   
cat1 4  10:01.01.003 100   
cat1 5  10:01:03.001 100   

我上面的數據可用於cat2,cat3等。數據按照時間順序排列。

我想從上面的表中生成一個新表,其中只有從10.01.01.002開始的值纔會出現,因爲它是滿足最小需求數量1000的第一行/時間。即在新表中包括行3,4和5,因爲它僅在第三行滿足最小數量。以上數據適用於cat1,cat2等。

上面的表格非常龐大,所以我正在尋找一種有效的方法。

感謝

+2

爲什麼不能你'選擇(使用SQL Server,因爲我沒有看到的Sybase作爲一個選項,但我相信Sybase支持子查詢授予)...其中時間> ....'? –

+0

@MisrableVariable - 因爲他不知道時間值應該是什麼。 – Hogan

+1

桌子的主要關鍵是什麼?類型,行還是隻是行? – beny23

回答

1

您可以使用TOP 1查找條件的第一項,然後在select語句中使用它。

像這樣(不知道您的具體要求)

declare @marker datetime 

SELECT TOP 1 @marker = Time 
FROM TableName 
WHERE Quantity > 1000 ORDER BY Row DESC 

SELECT * 
FROM TableName 
WHERE Time > @marker 
+0

謝謝!我認爲你的邏輯服務於我的目的。 – Zanam

+0

@ user1949158 - 您可以通過單擊問題旁邊的複選標記來選擇您正在使用的答案。 – Hogan

0

SELECT * FROM tables_name WHERE Row >= 3
我不知道我理解正確你的問題。你是否真的想要排在第三位之後的行,還是隻是作爲格式化的一部分自動添加的?這隻會在Row是主鍵時起作用。

0

如果我正確理解你的問題,你可以做這樣的事情?

SELECT * 
FROM TABLE T 
    JOIN (
     SELECT Type, Row 
     FROM TABLE 
     WHERE Quantity >= 1000 
    ) T2 ON T.Type = T2.Type 
WHERE T.Row >= T2.Row 

這裏是SQLFiddle

相關問題