1

6 つのフィールドを持つデータエクステンションがあります。

EmailAdress (type: EmailAdress, unique)
Field1 (type: number, not nullable)
Field2 (type: number, not nullable)
Field3 (type: number, not nullable)
Field4 (type: number, not nullable)
Field5 (type: number, not nullable)

1. 各フィールドの値をampscript

変数に渡す (簡単な部分)

%%[
Set @var1 = Field1
Set @var2 = Field2
Set @var3 = Field3
Set @var4 = Field4
Set @var5 = Field5
]%%

2. 値に基づいて変数を降順に並べ替え、(3) 5 つのコンテンツ領域の 1 つに渡します。

%%=ContentAreaByName("my contents\Campaigns\mainitem\@maxvar1")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem1\@maxvar2")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem2\@maxvar3")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem3\@maxvar4")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem4\@maxvar5")=%%

たとえば、私のフィールドの値が次の場合:

Field1: 10
Field2: 15
Field3: 5
Field4: 1
Field5: 100

次に、5 つの contentareas に次のように入力する必要があります。

%%=ContentAreaByName("my contents\Campaigns\mainitem\@field5")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem1\@field2")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem2\@field1")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem3\@field3")=%%
%%=ContentAreaByName("my contents\Campaigns\subitem4\@field4")=%%

値を amscript 値に渡すのは非常に簡単です。しかし、それらを desc ソートして適切な @maxvar に渡すのは、ampscript の知識が限られているため、少しやり過ぎのようです。

どんな助けでも大歓迎です!

4

1 に答える 1

0

素晴らしい質問です。クエリ アクティビティを使用してデータ エクステンションのピボットを解除し、 LookupOrderedRows()関数を使用して適切な順序でそれらを取得します。AMPScript では並べ替えが面倒です。

T-SQL UNPIVOT() 関数は ET/SFMC では機能しないため、クエリ アクティビティで昔ながらの方法で実行する必要があります。

select 
emailAddress
, field
, fieldValue
from [unpivot-test]
cross apply (
  select 'field1', field1 union all
  select 'field2', field2 union all
  select 'field3', field3 union all
  select 'field4', field4 union all
  select 'field5', field5
) c (field, fieldValue)

私のブログには、いくつかの AMPScript ルックアップの例があります。LookupOrderedRows() のものは次のとおりです。

%%[
var @rows, @row, @rowCount, @numRowsToReturn, @lookupValue, @i

set @lookupValue = "whee"
set @numRowsToReturn = 0 /* 0 means all */
set @rows = LookupOrderedRows("DataExtensionName",@numRowsToReturn,"DEColumn1 desc, DEColumn2 asc","LookupColumn", @lookupValue)
set @rowCount = rowcount(@rows)

if @rowCount > 0 then

for @i = 1 to @rowCount do

var @DEColumn1, @DEColumn2
set @row = row(@rows,@i) /*get row based on loop counter */
set @DEColumn1 = field(@row,"DEColumn1")
set @DEColumn2 = field(@row,"DEColumn2")

]%%

Row %%=v(@i)=%%, DEColumn1 is %%=v(@DEColumn1)=%%, DEColumn2 is %%=v(@DEColumn2)=%%

%%[

next @i ]%%

%%[ else ]%%

No rows found

%%[ endif ]%%

また、今後の ET/SFMC に関する質問は、salesforce.stackexchange.comに投稿し、タグを付けてくださいmarketing-cloud。あちらで質問をしたり、質問に答えたりする人がもっとたくさんいます。

于 2015-03-21T14:01:46.423 に答える