大規模な SQL クエリに少しのロジックを組み込むのに問題があります。レポート デザイナで SQL Server Reporting Services 2005 を使用していますが、レポートに入力する単一の SQL クエリを定義する領域が 1 つしかありません。うまくいけば、誰かが私の構文の何が問題なのか教えてくれるので、実行できるようになります。
(QuoteOrderStatus != 'Closed') でフィルタリングする一連の属性を選択するだけでなく、COUNT(DISTINCT ItemID's) ステートメント (集計関数) で (ItemStatus != 'inactive') を使用して見積もりをカウントするだけで済みます。 . 非アクティブなアイテムを含む見積もりを単純にフィルターで除外したくはありません。アイテムがゼロの見積もりを引き続き表示したいからです。それらを合計itemCountに含めたくないだけです。
私は調査を行い、このタイプのロジックを達成する方法は CASE ステートメントを使用しているようですが、この 1 つの難読化されたクエリにそれらを組み込むのに問題があります。Report Designer は単にそれが間違っていることを教えてくれ、私が望まない方法に再配置してくれます。有効なクエリとして受け入れられるように、このステートメントを修正するのを手伝ってくれる人はいますか?
この特定の種類の問題に対する適切なリソースを見つけることなく、これを何時間も調査しました。コードが不明確な場合は申し訳ありませんが、できる限り説明しようとしました。何らかの方法で明確にしたい場合は、質問してください。誰かが提供できる助けに感謝します.
SELECT DISTINCT
BIAdmin.Quote.QuoteOrderSalesOffice, BIAdmin.Quote.ManufacturerQuoteNumber,
BIAdmin.Quote.CustomerName, BIAdmin.Quote.Project_JobTitle,
BIAdmin.Quote.EndUserName, BIAdmin.Quote.QuoteOrderStatus,
SUM(BIAdmin.Item.TotalPriceOfItemNumber) AS totalValue, BIAdmin.Item.ItemStatus
FROM BIAdmin.Quote LEFT OUTER JOIN BIAdmin.Item ON BIAdmin.Quote.ID = BIAdmin.Item.QuoteID
WHERE BIAdmin.Item.ItemStatus LIKE
CASE WHEN NOT (BIAdmin.Item.ItemStatus = 'inactive') THEN
SELECT DISTINCT COUNT(BIAdmin.Item.ID) AS itemCount
GROUP BY BIAdmin.Quote.QuoteOrderSalesOffice, BIAdmin.Quote.ManufacturerQuoteNumber,
BIAdmin.Quote.CustomerName, BIAdmin.Quote.Project_JobTitle,
BIAdmin.Quote.EndUserName, BIAdmin.Quote.QuoteOrderStatus, BIAdmin.Item.ItemStatus
HAVING (NOT (BIAdmin.Quote.QuoteOrderStatus = N'[Closed]'))