我正在进口几家商店的销售和购买COST,其中每家商店都有自己的包装(利用并行)。设置它可能相当耗时,因为我必须进入每个存储OLE DB Source
并调整FROM
子句以捕获存储具有单独的数据库(存储编号的数据库) 9999是[database].[dbo].[sales9999]
)。
我还想在每个商店的Select
子句中使用商店编号。例如,对于客户9999,我需要Select 9999 AS StoreKey
作为列。
因此我想这样:
SELECT ? as StoreKey, a.saleprice, b.purchasecost
FROM ? AS a JOIN ? AS b ON a.ID = b.ID
在我的OLE DB源中,并将?
与相应的参数匹配。但是当我试图实现这个时,我收到的错误是参数只能在Where
子句中使用,我不需要。
有人有任何想法吗?
问候,
答案 0 :(得分:1)
你当然可以借助于被评估为表达式的Variable来做到这一点。例如,您的select语句可以写为以下变量表达式:
"SELECT N'"+@[User::strStoreKey]+"' as StoreKey, a.saleprice, b.purchasecost
FROM "+@[User::strTableName]+" AS a JOIN "+@[User::strAnotherTable]+"
AS b ON a.ID = b.ID"
这里的变量必须使用String数据类型或表达式类型来定义 使用这种方法时要注意几点:
Select
查询的结果集必须在列,名称和数据类型方面相同。 strStoreKey
,strTableName
和strAnotherTable
,这会导致有效查询。否则,您的包将在保存时验证失败。 DelayValidation=True
。这将在执行前验证数据源或目标,而不是在程序包加载时验证。 当目标表名称设置为变量时,您也可以将此方法用于变量目标;同样的限制适用。