SQL SP_EXECSQL @VAR运行“动态”” OpenQuery

我有一个OpenQuery(在SQL2005中用于对遗留数据库运行查询)。我正在构建要运行的字符串,以便返回最近6个月的数据。 我遇到的问题是'||'结束。 这适用于遗留系统:
SELECT
    EVENT_DATE || ' ' || EVENT_TIME as EVENTDateTime
FROM
     EVENT
这通过链接SQL Server在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
我知道我错过了一些简单的东西......但是||尽管它本身可以在遗留系统上运行,但是将字符串汇总在一起会让事情变得更糟。     
已邀请:
你是对的,它不起作用因为它没有发送完整的字符串到
OPENQUERY
,你可以尝试两件事。首先,连接右
'
,它应该是这样的:
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';
    

要回复问题请先登录注册