有一列 - 当前产品 - 根据库存列的值有两个值。这意味着当库存为空时,它被称为“当前产品”,当它有一些价值时,它被称为“匹配”。像这样......
==================================================================
Current Product Stocked AnnualSavings Sodium
Current product 450.00
Match yes 1234.00 432.00
现在SSRS 2008 R2报告中的钠文本框为空。当用户输入10时 那么我们必须检查钠的匹配值是否低于当前产品的10%。
我怎么能这样做??
答案 0 :(得分:1)
如果我正确理解您的要求,下面的查询将作为SSRS数据集。我想您要从表中选择Stocked字段不为空的任何行,并且在“当前产品”的特定范围内选择Sodium该范围由用户指定为报告的参数。
在报表本身的数据集查询中过滤它会容易得多,因为它取决于比较记录之间的值。
我认为如果我错过了这个,那么在示例表中添加更多行会有所帮助。
;
WITH
(
SELECT
[Current Product] ,
[Stocked] ,
[OriginalProduct] ,
[Sodium(Mg)]
FROM
#TempConversion7
WHERE
MemberPurchaseDataId IN ( SELECT DISTINCT
MemberPurchaseDataId
FROM
#TempConversion7
WHERE
SrNo > 1 )
) AS ListCTE
SELECT
*,
CASE WHEN CurrentProd.[Sodium(Mg)] >=
( MatchProd.[Sodium(Mg)] *(1.0 - ( @MatchValueParameter * 0.01)))
AND CurrentProd.[Sodium(Mg)] <=
( MatchProd.[Sodium(Mg)] *(1.0 + ( @MatchValueParameter * 0.01)))
THEN
1
ELSE 0
END
AS WithinPercentRange
FROM
ListCTE AS CurrentProd
FULL OUTER JOIN
ListCTE AS MatchProd
ON CurrentProd.OriginalProduct = MatchProd.OriginalProduct
AND CurrentProd.[Current Product] = 'Current Product'
AND MatchProd.[Current Product] = 'Match'