2009-04-06 14 views
1

AS400でSQLでsubselectを実行しようとしていて、 "データ変換またはデータマッピングエラー"が表示されています - SQLがサブSELECTの日付を処理する方法と関係しています具体的には、コンマを小数点フィールドに追加することでフォーマットを変更しています。次の選択を行うと混乱します) - 誰かが私のためにこれを確認できますか?多分私はこの問題を回避する必要があることを示唆していますか?サブ選択の問題

基本的には、以下のようなものがあります。日付は10進数で、この形式で表示されます:CCYYMMDD(つまり、CC、YYM、MDDとして出てくる日付でselectを行うだけです)。日付はテーブル3から来ています

SELECT * 
FROM TABLE1 A 
    CROSS JOIN TABLE2 B 
    LEFT OUTER JOIN (SELECT * 
         FROM TABLE3 C 
         LEFT OUTER JOIN TABLE4 D ON (blah) 
         INNER JOIN TABLE5 E ON (blah) 
         WHERE DATE >= 20080101 
         AND DATE <= 20090101 
        ) AS C ON (blah AND blah) 
+0

あなたは曖昧さや曖昧さについて詳しく説明できますか?おそらく結合パラメータは問題の一部ですか?テスト:サブセレクトは単独で動作しますか?もしそうなら、あなたの日付ではありません。 – n8wrl

+0

日付はどのように定義されていますか。 10進数または実際の日付? –

答えて

4

私はほとんど経験がありませんが、あなたの問題は古典的な分割と征服です。

サブクエリを分離する - それ自体は正常に動作しますか? 次に、テーブル1から開始し、相互クエリが機能することを確認してください。 次に、サブクエリを追加します。

AS/400がサポートしているかどうかわかりませんが、SQL Serverの共通テーブル式は非常に便利です。基本的にローカルスコープのビューです。より理解しやすいようにサブクエリのビューを作成することができたからです。

すべてのすべてで、私はあなたの問題は「何とかして何とか」内にある疑いがある:)

0

適切にそれはAS400が作業している「SQL」の何味を知るために役立つだろう、この質問に答えるために。 AS400は単なるサーバーです。 AS400は、DB2、MS SQL Server、Oracleなどの多くのデータベースのフレーバーで動作します。

SQLの味を知らずにすばやく刺すには、それらが数値として扱われることはありません。

DATE> =「20080101」 と日付< =「20090101」

2

あなたがその味デシベルネイティブAS400を使用している場合は、次のとおりです。iSeriesのためのDB2(Linuxおよび他のためのDB2と混同しないようにプラットフォーム)

もしそうなら、表3のDATEフィールドはあなたの言うとおり、CCYYMMDD形式の10進数です。カンマは、表示の小数点に適用されるフォーマットであり、値とともに格納されません。

私はn8wrlに同意しますが、簡単な「テーブル3から選択> = 20080101」を試してみて、それが実行されているかどうかを確認してそこから出てください。

よろしくお願いします。