Salesforce Marketing Cloud查询根据" SQL支持"不允许变量或临时表。本官方文档的一部分(http://help.marketingcloud.com/en/documentation/exacttarget/interactions/activities/query_activity/)
我有一个名为Parameters_DE的数据扩展,其中包含存储常量值的字段Name和Value。我需要在查询中引用此DE。
使用transact-SQL,例如:
Declare @number INT
SET @number = (SELECT Value FROM Parameters_DE WHERE Name='LIMIT')
SELECT * FROM Items_DE
WHERE Price < @number
如何在没有变量或临时表的情况下完成上述操作,以便我可以参考&#39; LIMIT&#39;存储在Parameters_DE中的变量,以便查询可以在Marketing Cloud中使用吗?
答案 0 :(得分:3)
即使允许变量,这也是我本来会做的:
SELECT i.*
FROM Items_DE i
INNER JOIN Parameters_DE p ON p.Name = 'LIMIT'
WHERE i.Price < p.Value
想要使用变量表示仍在思考程序,而不是基于集合。请注意,如果需要,可以多次连接到Parameters_DE表(每次都给出差异别名),以便在查询的不同部分使用不同参数的值。
通过使用包含一行的参数表以及所需的每个值的列,您还可以使此类查询的效率更高。然后,您可以使用1 = 1条件一次加入表格,并查看所需的列。当然,这个想法也有局限性。
答案 1 :(得分:0)
您可以使用SELECT
检索WHERE
子句中的数字:
SELECT * FROM Items_DE
WHERE Price < (SELECT Value FROM Parameters_DE WHERE Name='LIMIT')
答案 2 :(得分:0)
这可以通过连接
完成SELECT i.*
FROM Items_DE i
INNER JOIN Parameters_DE p
ON p.Name = 'LIMIT'
AND p.Price > i.Value