SFMC SQL 查询 - 限制记录数

问题描述 投票:0回答:1

我正在尝试在 Salesforce Marketing Cloud 中创建一个自动化功能,将客户从滚动表中提取出来,并将其放入条目表中,并从车辆表中提取推荐的库存编号。推荐的库存编号应为包含 2 个库存编号的字符串,与滚动表中库存编号的品牌和型号相匹配。

测试_滚动表

客户ID 库存编号
CID101 3001
CID102 3002

测试_车辆表

库存编号 制作 型号
3001 福特 探索者
4067 福特 探索者
8913 福特 探索者
3002 本田 雅阁
6325 本田 雅阁
1717 本田 雅阁

测试_条目表

客户ID 库存编号 推荐库存编号
CID101 3001 4067,8913
CID102 3002 6325,1717

我有一个查询,可以提取RecommendedStockNumbers的所有匹配品牌/型号,但我不知道如何将其限制为2(因此我不会超出条目表的字符限制)。

SELECT 
    c.CustomerId,
    c.StockNumber,
    STRING_AGG(v2.StockNumber, ',') WITHIN GROUP (ORDER BY v2.StockNumber) AS RecommendedStockNumbers
FROM 
    Test_RollingTable c
LEFT OUTER JOIN 
    Test_EntryTable e ON e.CustomerId = c.CustomerId
INNER JOIN 
    Test_VehicleTable v1 ON c.StockNumber = v1.StockNumber
INNER JOIN 
    Test_VehicleTable v2 
    ON v1.StockNumber <> v2.StockNumber
       AND v1.VehicleMake = v2.VehicleMake
       AND v1.VehicleModel  = v2.VehicleModel
       
WHERE 
    e.CustomerId IS NULL
GROUP BY 
    c.CustomerId, c.StockNumber
HAVING 
    COUNT(v2.StockNumber) > 0 
sql salesforce salesforce-marketing-cloud
1个回答
0
投票

我建议你将现有的查询嵌套1层,这样你就可以计算出相关的行号,这样你就可以限制串联必须处理的行数,如下所示:

SELECT
      CustomerId
    , StockNumber
    , STRING_AGG(StockNumber, ',') WITHIN GROUP (ORDER BY StockNumber) AS RecommendedStockNumbers
FROM (
    SELECT
          c.CustomerId
        , c.StockNumber
        , v2.StockNumber
        , ROW_NUMBER() OVER (PARTITION BY c.CustomerId, c.StockNumber 
                             ORDER BY v2.StockNumber
            ) AS RowNo
    FROM Test_RollingTable c
    LEFT OUTER JOIN Test_EntryTable e ON e.CustomerId = c.CustomerId
    INNER JOIN Test_VehicleTable v1 ON c.StockNumber = v1.StockNumber
    INNER JOIN Test_VehicleTable v2 ON v1.StockNumber <> v2.StockNumber
        AND v1.VehicleMake = v2.VehicleMake
        AND v1.VehicleModel = v2.VehicleModel
    WHERE e.CustomerId IS NULL
    ) d
WHERE d.RowNo <= 2 --<< limit the result to a maximum of 2 rows per group
GROUP BY
      c.CustomerId
    , c.StockNumber 
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.