T-SQL where 子句与 nvarchar 由 openquery 中的 string_agg 组成
T-SQL Where clause with nvarchar composed by a string_agg in openquery
我正在创建一个存储过程,其中我有这个 openquery:
SELECT @MY_QUERY = 'SELECT * FROM OPENQUERY(HYPER_CONN, ''
SELECT COALESCE(SUM(QUANT_RIGA),0) FROM DDT_CLI_RIGHE WHERE DOC_RIGA_ID = ''''' + @THE_DDT + ''''' '')'
在 where 子句中我设置了这个变量 @THEDDT
:
DECLARE @THE_DDT nvarchar(MAX) = (SELECT STRING_AGG(DOC_RIGA_ID,',') FROM ...
例如@THEDDT = test1,test2,test3
我想在我的“where in”子句中设置这个变量。
所以在 openquery 中,我试图拥有这样的东西(但使用变量):
WHERE DOC_RIGA_ID IN ('test1','test2','test3')
有办法吗?
这更像是在黑暗中刺探,因为我们没有所有信息,但是,正如我提到的,似乎您需要做的就是改变您的 DOC_RIGA_ID = {literal}
子句到 DOC_RIGA_ID IN ({delimited List})
子句:
DECLARE @THE_DDT nvarchar(MAX) = (SELECT STRING_AGG(QUOTENAME(DOC_RIGA_ID,''''),',') --Assumes DOC_RIGA_ID can't have a value longer than 128 characters
FROM ...
SELECT @MY_QUERY = 'SELECT * FROM OPENQUERY(HYPER_CONN, ''
SELECT COALESCE(SUM(QUANT_RIGA),0) FROM DDT_CLI_RIGHE WHERE DOC_RIGA_ID IN (' + REPLACE(@THE_DDT,'''','''''') + ')'') OQ;';
当然,这是未经测试的,因为我无法测试此声明。
我正在创建一个存储过程,其中我有这个 openquery:
SELECT @MY_QUERY = 'SELECT * FROM OPENQUERY(HYPER_CONN, ''
SELECT COALESCE(SUM(QUANT_RIGA),0) FROM DDT_CLI_RIGHE WHERE DOC_RIGA_ID = ''''' + @THE_DDT + ''''' '')'
在 where 子句中我设置了这个变量 @THEDDT
:
DECLARE @THE_DDT nvarchar(MAX) = (SELECT STRING_AGG(DOC_RIGA_ID,',') FROM ...
例如@THEDDT = test1,test2,test3
我想在我的“where in”子句中设置这个变量。
所以在 openquery 中,我试图拥有这样的东西(但使用变量):
WHERE DOC_RIGA_ID IN ('test1','test2','test3')
有办法吗?
这更像是在黑暗中刺探,因为我们没有所有信息,但是,正如我提到的,似乎您需要做的就是改变您的 DOC_RIGA_ID = {literal}
子句到 DOC_RIGA_ID IN ({delimited List})
子句:
DECLARE @THE_DDT nvarchar(MAX) = (SELECT STRING_AGG(QUOTENAME(DOC_RIGA_ID,''''),',') --Assumes DOC_RIGA_ID can't have a value longer than 128 characters
FROM ...
SELECT @MY_QUERY = 'SELECT * FROM OPENQUERY(HYPER_CONN, ''
SELECT COALESCE(SUM(QUANT_RIGA),0) FROM DDT_CLI_RIGHE WHERE DOC_RIGA_ID IN (' + REPLACE(@THE_DDT,'''','''''') + ')'') OQ;';
当然,这是未经测试的,因为我无法测试此声明。