1

我不确定这是否可以在水晶内完成,但它就在这里。

要获取有关此报告的更多报告信息,需要两个值。首先是查找已售出的单位...第二个是为报告找到合适的最终价格...我最初的想法是尝试将查询分配给 SQL 表达式中的变量,以获取第一个值以便传递给第二......但它不喜欢我的变量。

CASE WHEN "Items"."ItemId" IS NULL THEN NULL
ELSE
    LOCAL NumberVar totalSold :=(SELECT SUM([QuantitySold]) AS TotalSold 
                    FROM Skus 
                    WHERE Skus.ItemId = "Items"."ItemId" 
                    AND Skus.SkuEnabled = 1);

    SELECT TOP 1 Price 
    FROM [MYDB].[dbo].[PriceTables] p
    WHERE p.UnitsSoldBreak >= totalSold 
      AND p.ItemId = "Items"."ItemId"
    ORDER BY p.UnitsSoldBreak asc

END

从本质上讲,一个项目有多个最终定价层,这些查询让我可以根据售出的数量查看最终价格。查询在 SQL Management Studio 中运行良好,只需弄清楚如何将其迁移到表达式以显示最终价格(单个数字)。

引擎在局部变量声明上咳嗽。

4

1 回答 1

2

您可能想要使用子查询而不是变量。试试这样的东西:

CASE WHEN "Items"."ItemId" IS NULL THEN NULL
ELSE

    SELECT TOP 1 Price 
    FROM [MYDB].[dbo].[PriceTables] p
    WHERE p.UnitsSoldBreak >= ( SELECT SUM([QuantitySold]) 
                FROM Skus 
                WHERE Skus.ItemId = "Items"."ItemId" 
                  AND Skus.SkuEnabled = 1)
      AND p.ItemId = "Items"."ItemId"
    ORDER BY p.UnitsSoldBreak asc

END
于 2013-04-11T18:41:07.763 回答