Неверные результаты при использовании параметра в SSRS - PullRequest
0 голосов
/ 28 мая 2019

У меня есть отчет SSRS, для которого я создал два набора данных.Один для фактического отчета и один для параметра.

Набор данных 1 - это отчет Набор данных 2 просто извлекает параметр, по которому я хочу сообщить, из таблицы, в которой он хранится.

Когда я запускаю отчет и выбираю параметр, он показывает все значения, но когда я выбираю одно, я все равно получаю все записи, а не только записи, основанные на параметре.

Набор данных 1

SELECT stk.ItemCode AS ItemCode, stk.warehouse AS warehouse, 
     stk.Description AS Description, stk.Assortment AS Assortment, 
    Items.Class_02, stk.ItemGroup AS ItemGroup, stk.ItemStatus AS ItemStatus, 
    stk.ItemUnit AS ItemUnit, ISNULL((SELECT TOP 1 dbo.bacoSalesPrice(p.ID, 
    0) FROM staffl p WHERE ({d '2019-05-27'} BETWEEN validfrom AND 
    ISNULL(validto,{d '9999-12-31'})) 
    AND prijslijst  = 'SALESPRICE' AND Items.ItemCode = artcode ORDER BY 
   artcode, validfrom desc),0) AS SalesPackagePrice, 
   ROUND((stk.Stock/stk.SalesPkg),2) AS Stock, ROUND((stk.Stock + 
   stk.QtyToBeReceived - stk.QtyToBeDelivered)/stk.SalesPkg,2) AS 
   AvailableStock, stk.SearchCode AS SearchCode FROM Items INNER JOIN (
   SELECT 
   v.magcode AS warehouse, 
   MAX(i.itemcode) AS ItemCode, 
   MAX(i.description_0) AS Description,  
   i.SearchCode AS SearchCode, 
   MAX(ia.Assortment) AS Assortment, 
   MAX(ia.Description_0) AS ItemGroup, 
   MAX(CASE
   WHEN i.condition = 'A' THEN 'Active'
   WHEN i.condition = 'B' THEN 'Blocked'
   WHEN i.condition = 'D' THEN 'Discontinued'
   WHEN i.condition = 'E' THEN 'Inactive'
   WHEN i.condition = 'F' THEN 'Future'
   END) AS ItemStatus, 
   ISNULL(MAX(a.purchasepackage), '-') AS ItemUnit,
   MAX(i.SalesPackagePrice) AS SalesPackagePrice, 
   MAX(v.bestniv) AS Minimum, 
   MAX(v.maxvrd) AS Maximum, 
   MAX(i.lev_crdnr) AS Supplier, 
   MAX(a.DeliveryTimeInDays) AS DeliveryTime, 
   MAX(ISNULL(a.SlsPkgsPerPurPkg,1)) AS SalesPkg, 
   ISNULL(Actual.Quantity,0) AS Stock 
  ,ISNULL(SUM(QtyToReceived),0) AS QtyToBeReceived 
  ,ISNULL(SUM(QtyToBeDelivered),0) AS QtyToBeDelivered 
  FROM items i 
  JOIN voorrd v ON i.itemcode=v.artcode 
  LEFT JOIN itemaccounts a ON i.itemcode=a.itemcode and i.lev_crdnr=a.crdnr 
  AND i.itemcode IS NOT NULL AND a.itemcode IS NOT NULL  AND i.lev_crdnr IS N 
 NOT NULL AND a.crdnr IS NOT NULL 
JOIN ItemAssortment ia ON ia.Assortment = i.Assortment 
 LEFT OUTER JOIN 
dbo.TempToBeReceivedDelivered#3E5BBBE6#FB7B#4309#9CE1#560885B9BF94# budget
 ON v.magcode = budget.warehouse AND i.ItemCode = budget.artcode 
 AND v.magcode IS NOT NULL AND budget.warehouse IS NOT NULL  AND i.ItemCode IS NOT NULL AND budget.artcode IS NOT NULL 
LEFT OUTER JOIN 
 (SELECT GX.artcode, GX.warehouse, 
 GX.Quantity, 
 GX.AmtActualStock, GX.TotalCnt, 
 CASE WHEN GX.FreeQuantity > GX.CurrentQuantity THEN (CASE WHEN GX.CurrentQuantity < 0 THEN 0 ELSE GX.CurrentQuantity END) ELSE 
 (CASE WHEN GX.FreeQuantity < 0 THEN 0 ELSE GX.FreeQuantity END) END As FreeQuantity 
 FROM ( 
SELECT sb.ItemCode AS artcode, SUM(CASE WHEN sb.Date <= {d '2019-05-27'} THEN sb.Quantity END) as Quantity, 
 ROUND(SUM(CASE WHEN sb.Date <= {d '2019-05-27'} THEN sb.StockAmount END),2) as AmtActualStock, 
 SUM(CASE WHEN sb.Date <= {d '2019-05-27'} THEN sb.Quantity END) as CurrentQuantity, 
 SUM(CASE WHEN sb.Date <= {d '2019-05-27'} THEN sb.FreeStock END) AS FreeQuantity, sb.Warehouse, 
 SUM(sb.GbkmutCount) AS TotalCnt 
 FROM StockBalances sb WITH (NOLOCK) JOIN Items ON sb.ItemCode = Items.ItemCode JOIN ItemAssortment ON Items.Assortment = ItemAssortment.Assortment 
 --WHERE  Items.Class_02 in @Customer 
 GROUP BY sb.ItemCode, sb.WareHouse, Items.Class_02  
 HAVING SUM(sb.GbkmutCount) > 0) GX) AS Actual  
 ON Actual.artcode = i.ItemCode AND Actual.warehouse = v.magcode  AND Actual.artcode IS NOT NULL AND i.ItemCode IS NOT NULL  AND Actual.warehouse IS NOT NULL AND v.magcode IS NOT NULL 
 WHERE i.type IN ('S', 'B')
 AND i.ItemCode BETWEEN '0030122186' AND 'XS45000'
 AND i.Condition IN ('A')
 AND ((i.IsSalesItem <> 0)) AND i.Type IN ('S', 'B')
 AND 1=1 
 GROUP BY v.magcode , i.itemcode, i.SearchCode, Actual.Quantity 
) stk ON items.ItemCode = stk.ItemCode
INNER JOIN grtbk ON Items.GLAccountDistribution = grtbk.reknr
 ORDER BY stk.ItemCode

Набор данных 2

SELECT Class_02, ItemCode FROM Items

Для параметра в SSRS задано значение Получить значения из запроса, поле Значение: Class_02 Поле метки: Class_02

...