2011-06-21 9 views
2

私はさまざまなデータベースで動作するコードを持っています。単純に、構成可能なSQL問合せを実行して、いくつかの行を戻します。各行から、いくつかのテキストと数字を引っ張って新しいオブジェクトを作成します。私たちの最新のクライアントは、データベースすなわち人為的に行を作成するためのsqlクエリ

text_1, num_1, text_2, num_2, text_3, num_3 

の単一列内のすべてのテキスト番号の組み合わせを置くことを決めた私は「私ドンように、これは

text_1,num_1 
text_2,num_2 
text_3,num_3 

を返すように照会することができる巧妙な方法はありますこのクライアントのセクションを再コーディングする必要があります。

EDIT: (異なるデータベースが異なるRDBMSを意味する) (カンマは、テーブル内の別の列を区切る)

+1

各行は単一の文字列ですか、別のフィールドを示すために '、'を使用していますか?また、さまざまなデータベースについて言えば、それぞれに異なるRDBMSを意味するのでしょうか?または、異なる物理インスタンスだけでなく、すべて同じRDBMSを使用していますか? – MatBailie

+0

@Dems - あなたの質問に答えるための質問を更新 –

答えて

5
SELECT 
    CASE row.id WHEN 1 THEN field1 
       WHEN 2 THEN field3 
        ELSE field5 
    END          AS new_field_1, 
    CASE row.id WHEN 1 THEN field2 
       WHEN 2 THEN field4 
        ELSE field6 
    END          AS new_field_2 
FROM 
    myTable 
CROSS JOIN 
    (SELECT 1 AS id UNION ALL SELECT 2 UNION ALL SELECT 3) AS row 

まだ少し修正が必要なのにこれは、ほとんどのために働く必要があります(このようなOracleのためのUNIONの「デュアルから」追加など...)また

、一緒にちょうどUNION 3つのクエリ...

SELECT field1, field2 FROM myTable 
UNION ALL 
SELECT field3, field4 FROM myTable 
UNION ALL 
SELECT field5, field6 FROM myTable 
+0

を使用する必要があります。 –

1

あなたがResultSetに必要な方法を返すように機能/ SPを作成することができます。

+0

それは異なるRDBMSシステム上で実行する必要がありますので、非常に一般的なSQLサブセット –

関連する問題