两个查询Sql表达式

时间:2013-04-11 17:39:17

标签: sql sql-server crystal-reports

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

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

引擎在Local变量声明中咳嗽。

1 个答案:

答案 0 :(得分: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