【问题标题】:Calculate the value of the expression after the join of the tables in SSIS计算SSIS中表连接后表达式的值
【发布时间】:2019-11-14 00:36:35
【问题描述】:

表结构

目标:

是计算表达式的值(它们是表中的列名)。

检查表达式是否正确并评估结果。 预期结果和实际结果:无法在 SSIS 的帮助下评估表达式值。在 OLE db 源级别的查询中使用时在验证级别失败。

无法以使用SSIS 组件显示的粒度获取表达式的值。

尝试逐行调试以将错误表达式值标记为错误。尽量不要批量运行。希望逐行运行以隔离错误行。

【问题讨论】:

  • 看起来像是 2 个表之间的简单连接。到目前为止,您尝试了哪些方法来获得想要的结果?

标签: sql-server sql-server-2008 ssis sql-server-2008-r2 ssis-2012


【解决方案1】:

Dynamic SQL 会解决你的问题。

表架构:

CREATE TABLE TableA(ColA INT,ColB VARCHAR(20),ColC INT,ColE INT)
INSERT INTO dbo.TableA VALUES(1,'US',2,1)
INSERT INTO dbo.TableA VALUES(1,'US',4,2)
INSERT INTO dbo.TableA VALUES(2,'IND',3,6)
INSERT INTO dbo.TableA VALUES(2,'IND',1,5)

CREATE TABLE TableB(ColX INT,ColY VARCHAR(20),ColZ VARCHAR(20),ColV VARCHAR(20))
INSERT INTO dbo.TableB VALUES(1,'US','ColC*ColE','Table1')
INSERT INTO dbo.TableB VALUES(2,'US','ColC/ColE','Table1')

动态 SQL 查询:

DECLARE @query NVARCHAR(MAX)=''

SELECT @query = @query + '
UNION
SELECT A.ColA,
    A.ColB,
    A.ColC,
    A.ColE,
    B.ColZ AS ColF, 
     1.0*' +ColZ+ ' 
FROM TableA A
JOIN TableB B ON A.ColA = B.ColX
WHERE ColZ = ''' + ColZ + ''' '
FROM TableB;

SET @query = STUFF(@query,1,6,'');

--SELECT @query
--Print @query

EXEC (@query)

检查SQL Fiddle中的输出

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多