双查询Sql表达式

双查询Sql表达式,sql,sql-server,crystal-reports,Sql,Sql Server,Crystal Reports,我不确定这是否可以在crystal中实现,但现在它开始了 需要两个值来获取有关此报表的更多报表信息。首先是找到售出的单位。。。第二个是为报告找到合适的最终价格。。。我最初的想法是尝试将查询分配给SQL表达式中的一个变量,以获取第一个值并传递给第二个值。。。但它不喜欢我的变量 CASE WHEN "Items"."ItemId" IS NULL THEN NULL ELSE LOCAL NumberVar totalSold :=(SELECT SUM([QuantitySold]) AS

我不确定这是否可以在crystal中实现,但现在它开始了

需要两个值来获取有关此报表的更多报表信息。首先是找到售出的单位。。。第二个是为报告找到合适的最终价格。。。我最初的想法是尝试将查询分配给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中工作正常,只需考虑如何将其迁移到表达式以显示最终价格(单个数字)


引擎正在处理局部变量声明。

您可能希望使用子查询而不是变量。尝试一下这样的东西:

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

我不得不多玩一点,但这帮我找到了正确的方向。。。谢谢谢恩!很高兴这有帮助。。。当你把它完全分类后,你可能想用你的最终解决方案更新你的问题,以帮助下一个可怜的灵魂。