繁体   English   中英

通过 AmpScript 组合多行中的 1 个字段

[英]Combine 1 field from multiple rows via AmpScript

我有一个包含行和列的数据扩展,例如:

emailAddress     orderNumber   firstName   lastName   customerOrder
cust1@gmail.com  1111          Bill        Adams      2 brown shoes
cust1@gmail.com  1111          Bill        Adams      2 green socks
cust1@gmail.com  1111          Bill        Adams      1 orange backpack
cust1@gmail.com  2222          Bill        Adams      2 pink gloves
cust2@gmail.com  3333          David       Sherwood   5 yellow hats

我想要做的是从这些数据中创建一个收到电子邮件的订单,最好不要从源中更改它。 因此,理想情况下,电子邮件输出将根据 orderNumber 对每个客户的 customerOrder 进行分组。 然后将 customerOrder 连接起来并插入到电子邮件中(请注意,上面简化了很多,customerOrder 实际上是用于插入到电子邮件中的 HTML 表中的 HTML)。

到目前为止,我已经取得了非常基本的进步:

%%[
Set @customerOrder = 
LookupOrderedRows("transactionsList",
"0",
"customerOrder",
"orderNumber",
"1111")
]%%

使用此代码,我可以看到订单号 1111 有 3 个条目。但现在我卡住了。 我需要创建一个 if/then 循环吗? 或者有什么方法可以从 LookupOrderedRows 函数中获取输出并解析它以在电子邮件中的 HTML 表中使用?

使用我博客上的查找示例之一,您可以执行以下操作:

%%[
var @rows, @row, @rowCount, @numRowsToReturn, @emailAddress, @i, @prevOrderNumber

set @emailAddress = AttributeValue("emailaddr")
set @numRowsToReturn = 0 /* 0 means all */
set @rows = LookupOrderedRows("transactionsList", @numRowsToReturn, "orderNumber", "emailAddress", @emailAddress)

set @rowCount = rowcount(@rows)

if @rowCount > 0 then

    set @prevOrderNumber = ""

    for @i = 1 to @rowCount do

        var @orderNumber, @firstName, @lastName, @customerOrder
        set @row = row(@rows,@i) /* get row based on loop counter */

        set @orderNumber = field(@row,"orderNumber")
        set @firstName = field(@row,"firstName")
        set @lastName = field(@row,"lastName")
        set @customerOrder = field(@row,"customerOrder")

        /* output headings for first order or when order # changes */
        if empty(@prevOrderNumber) or @prevOrderNumber != @orderNumber then 
           outputline(concat("<br>Order #:", @orderNumber))
           outputline(concat("<br>Name: ", @firstName, " ", @lastName))
           outputline(concat("<br>Line items:<br>"))
           set @prevOrderNumber = @orderNumber
        endif

        outputline(concat("<br>",@customerOrder))

    next @i

else 

    outputline(concat("<br>No transactionsList rows found"))

endif 
]%%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM