2009-09-02 10 views
4

私はクエリーを書こうとしています。私はデカルト製品を持ちたくありません。いくつかのType_Codeには複数の記述があり、私はドルを掛けたくないので、私はFirst関数を使用するつもりでした。SQL:「ファースト」機能の代わりに?

Select 
Sum(A.Dollar) as Dollars, 
A.Type_Code, 
First(B.Type_Description) as FstTypeDescr 
From 
Totals A, 
TypDesc B 
Where 
A.Type_Code = B.Type_Code 
Group by A.Type_Code 

私は(私は本当にどちら気にしない)指定されたコードの説明のいずれかをつかむしたいです。 FIRSTを使用しようとすると、次のエラーが表示されます。

[IBM][CLI Driver][DB2/AIX64] SQL0440N No authorized routine named "FIRST" of type "FUNCTION" 

これを行う別の方法はありますか?

答えて

6

First()の代わりにMIN()を使用してください。

+0

私はMINをテキストフィールドに使用できました。ありがとう! – Dan

1

私はこの機能の実際の名前を忘れていますが、実際にサブクエリに参加するようにすることができます。 oxbow_lakesを示唆して使用するようにそのサブクエリに、あなたが行うことができます "トップ1"

何かのように:最初の

select * from table1 
inner join (select top 1 from table2) t2 on t2.id = table1.id 
2

()SQL標準ではありません。私はそれがどのデータベース製品で動作するのか忘れていますが、ほとんどのSQLエンジンにはありません。再帰が指摘しているように、min()は同じ目的を達成しますが、インデックスや他のクエリのコンポーネントによっては、最小値を見つけるために多くのレコードを検索する必要があります。 - そして自分自身の多く - あなたが本当に望むのは、すべてのマッチです。私はその質問をするための標準的なSQLの方法を知らない。 SQLは、実世界の問題を可能な限り迅速かつ効率的に解決しようとする実用的なコンピュータオタクではなく、セット理論の厳密な応用を模索している数学者によって設計されたようです。

関連する問題