1

Leadのようなキーワードを持たない古いバージョンのsybaseを使用しています。

以下のようなテーブルがあります。

タイプ行時間数量        
cat1 1 10:01:01.000 50          
cat1 2 10:01.01.0010          
cat1 3 10:01:01.002 1000          
cat1 4 10:01.01.003 100          
cat1 5 10:01:03.001 100          

cat2、cat3などについても上記のデータを利用できます。データは時間の昇順で並べられています。

上記のテーブルから新しいテーブルを生成したいと思います。このテーブルでは、最小必要数量1000が満たされる最初の行/時間であるため、10.01.01.002以降の値のみが存在します。つまり、最小数量が満たされるのは3行目だけなので、新しいテーブルに行3、4、および5を含めます。上記のデータはcat1、cat2などのものです。

上記の表は膨大なので、効率的な方法を探しています。

ありがとう

4

3 に答える 3

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
于 2013-01-09T20:16:57.007 に答える
0

SELECT * FROM tables_name WHERE Row >= 3
あなたの質問を正しく理解したかどうかわかりません。文字通り、3番目以降の行が必要ですか、それともフォーマットの一部として自動的に追加されますか?これは、行が主キーである場合にのみ機能します。

于 2013-01-09T20:15:11.343 に答える
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です(オプションとしてsybaseが表示されないため、SQL Serverを使用して許可されていますが、sybaseはサブクエリをサポートしていると思います)

于 2013-01-09T20:18:33.167 に答える