2014-07-24 4 views
0

Si quelqu'un pouvait m'aider avec cela, il serait grandement apprécié.Paramètres optionnels dans SSRS 2008

J'ai une requête qui tire nos données de vente que je veux mettre dans un SSRS report.Shown ici:

SELECT SH.[CompanyKey] 
    ,[DeliveryDate] 
    ,[CustomerKey] 
    ,AcAccounts.ShortDesc 
    ,SH.[ItemKey] 
    ,ITEM.ItemDesc 
    ,[InvoiceDate] 
    ,[SalesRep1Key] 
    ,[SalesRep2Key] 
    ,[ReturnCancelCode] 
    ,[ShipToKey] 
    ,[BillToKey] 
    ,[RouteNo] 
    ,[PaymentTypeKey] 
    ,[DeliveryTypeKey] 
    ,[OrderNo] 
    ,[OrderDate] 
    ,[OrderStatus] 
    ,[PostingPeriod] 
    ,[Quantity] 
    ,[QuantityUnit] 
    ,[QuantityConvFactor] 
    ,[OldOrderNo] 
    ,[OrderVersionNo] 
    ,[PONumber] 
FROM 
[Company].[dbo].[FactSalesHistoryDS] SH 
INNER JOIN [FRESHWAY].[dbo].[DimFiAcAccounts] AcAccounts ON 
AcAccounts.AccountKey = SH.CUSTOMERKEY 
INNER JOIN [freshway].[dbo].[dimitem] ITEM ON 
SH.ItemKey = ITEM.ItemKey 
WHERE INVOICEDATE BETWEEN @StartDate AND @EndDate 
AND SH.ItemKey = @ItemKey 

Je l'ai actuellement il organisé par numéro d'article qui fonctionne très bien, mais je voudrais aussi Comme ce rapport, vous avez la possibilité d'avoir un paramètre de clé client afin que je puisse exécuter le rapport par client ou par article. Est-ce possible de faire dans le même rapport ou dois-je simplement créer des rapports: Ventes par article et ventes par client

Répondre

1

Je recommanderais d'utiliser une déclaration de cas dans votre emplacement. Disons que vous avez un paramètre appelé @CustomerKey et qu'il est nullable avec le @ItemKey qui est également nullable. Votre choix serait alors disposé comme:

SELECT SH.[CompanyKey] 
    ,[DeliveryDate] 
    ,[CustomerKey] 
    ,AcAccounts.ShortDesc 
    ,SH.[ItemKey] 
    ,ITEM.ItemDesc 
    ,[InvoiceDate] 
    ,[SalesRep1Key] 
    ,[SalesRep2Key] 
    ,[ReturnCancelCode] 
    ,[ShipToKey] 
    ,[BillToKey] 
    ,[RouteNo] 
    ,[PaymentTypeKey] 
    ,[DeliveryTypeKey] 
    ,[OrderNo] 
    ,[OrderDate] 
    ,[OrderStatus] 
    ,[PostingPeriod] 
    ,[Quantity] 
    ,[QuantityUnit] 
    ,[QuantityConvFactor] 
    ,[OldOrderNo] 
    ,[OrderVersionNo] 
    ,[PONumber] 
FROM 
[Company].[dbo].[FactSalesHistoryDS] SH 
INNER JOIN [FRESHWAY].[dbo].[DimFiAcAccounts] AcAccounts ON 
AcAccounts.AccountKey = SH.CustomerKey 
INNER JOIN [freshway].[dbo].[dimitem] ITEM ON 
SH.ItemKey = ITEM.ItemKey 
WHERE INVOICEDATE BETWEEN @StartDate AND @EndDate 
AND SH.ItemKey = CASE WHEN @ItemKey IS NOT NULL THEN @ItemKey ELSE SH.ItemKey END 
AND SH.CustomerKey = CASE WHEN @CustomerKey IS NOT NULL THEN @CustomerKey ELSE SH.CustomerKey END 
+0

c'est exactement ce dont j'avais besoin! Merci! Pour une raison quelconque a dessiné un vide sur l'utilisation d'une déclaration de cas. – Zi0n1