2011-10-18 11 views
1

enter image description here列があります - 現在の製品 - 在庫列の値に応じて2つの値があります。これは、在庫が空のときは「現在の製品」と呼ばれ、何らかの価値があるときは「一致」と呼ばれます。このように.....列の異なる値の%差の計算方法

================================================================== 
Current Product  Stocked AnnualSavings  Sodium 
Current product         450.00      
    Match    yes   1234.00   432.00 

ここでは、SSRS 2008 R2のレポートにはヌルを含むナトリウムテキストボックスがあります。ユーザーが10 と入力すると、ナトリウムの一致値が現在の製品の10%以下であることを確認する必要があります。

どうすればいいですか?

+0

いいね。いいですね。 –

答えて

1

私の要件が正しく理解されている場合、以下のクエリはSSRSデータセットとして機能します。私はあなたがテーブルから列を選択したいと思っていますStockedフィールドがnullではなく、 "現在の製品"の特定の範囲内の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' 
+0

Subqueryが2つ以上の値を返したようなエラーが表示されています。サブクエリが=、!=、<, <= , >、> =、またはサブクエリが式として使用されているときは、これは許可されません。 –

+0

は役に立ちません.. :( –

+0

どうすればいいですか?同じエラーですか?その場合、質問に問題の再現を可能にするサンプルデータを提供できますか? –

関連する問題