0

OpenQueryがあります(SQL2005でレガシーデータベースに対してクエリを実行するために使用されます)。過去6か月のデータを返すように、実行する文字列を作成しています。

私が抱えている問題は「||」にあります 連結する。

これはレガシーシステムで機能します。

SELECT
    EVENT_DATE || ' ' || EVENT_TIME as EVENTDateTime
FROM
     EVENT

これは、リンクされたSQLServerを介してSQL2005で機能します。

Declare @Query nvarchar(MAX)
Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                *
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

exec sp_executesql @Query

これは動作しません:

Declare @Query nvarchar(MAX)
Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                EVENT_DATE || '' '' || EVENT_TIME
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

exec sp_executesql @Query

これもしません:

                EVENT_DATE '|'| '' '' '|'| EVENT_TIME

単純なものが欠けていることはわかっています...しかし|| 文字列を連結することは、レガシーシステム自体では機能しますが、混乱を招きます。

4

1 に答える 1

3

あなたは正しいです、それは完全な文字列をに送信しないので機能しませんOPENQUERY、あなたは2つのことを試すことができます。まず、権利を連結すると、次の'ようになります。

Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                EVENT_DATE || '''' '''' || EVENT_TIME
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

または、次のように、SQLでこれらの列を連結してみることができます。

Set @Query = N'
    SELECT
        *, EVENT_DATE + '' '' + EVENT_TIME
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                *
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';
于 2011-01-19T16:30:02.947 に答える