Domanda

Ho un OpenQuery (Utilizzato in SQL2005 per eseguire una query su un database legacy). Sto costruendo la stringa per eseguire in modo che io tornerò gli ultimi 6 mesi di dati.

Il problema che sto avendo è con '||' a concat.

Questo funziona sul sistema legacy:

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

Questo funziona in SQL2005 via collegato SQL Server:

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

exec sp_executesql @Query

Questo non funziona:

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

Né questo:

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

Lo so che mi manca qualcosa di semplice ... ma il || per concating stringhe è rovinare le cose, anche se lo fa il lavoro sul sistema legacy di per sé.

È stato utile?

Soluzione

Hai ragione, non funziona perché la sua non è l'invio di una stringa completa al OPENQUERY, si può provare due cose. In primo luogo, concatenando il ' destra, dovrebbe essere simile a questo:

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

Oppure si può provare concatenando le colonne in SQL, in questo modo:

Set @Query = N'
    SELECT
        *, EVENT_DATE + '' '' + EVENT_TIME
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                *
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top