0
私は、2つの異なる通貨(ドルとボリビアーノ)で1社の業務量を取得する必要があります。私はストアドプロシージャで2つのクエリを作成し、それは動作します。私の問題は、ほとんど同じであるため、一意のクエリでそれらをマージする方法がわかりません。クエリを改善しようとしています
SELECT @amount_dollars = ISNULL(SUM(Amount), 0.00)
FROM ProcessBatches
WHERE
CompanyId = @company_id
AND CONVERT(CHAR(8), DateProcess, 112) = @current_date
AND Currency = 'USD'
AND OperationTypeId NOT IN (17,18)
AND State IN ('P','W','N','A')
SELECT @amount_bols = ISNULL(SUM(Amount), 0.00)
FROM ProcessBatches
WHERE
CompanyId = @company_id
AND CONVERT(CHAR(8), DateProcess, 112) = @current_date
AND Currency = 'BOL'
AND OperationTypeId NOT IN (17,18)
AND State IN ('P','W','N','A')
私はSQLの専門家ではありません。事前のおかげで、私の英語のため申し訳ありません(私が学んでいます)
うん!、それは動作します。ありがとう。私はCOALESCE関数を知らない。 –
@HéctorÁlvarez:「日付型にインデックスを入れないようにしてください。どうして? –
@HéctorÁlvarezもし私があなたのコメントをdownvoteできます。インデックス作成の日付列は非常に一般的で効果的な戦略です。データ型にかかわらず、インデックスにはコストがかかります。コストと便益のバランスをとることができます。また、索引内の列のセットは一意ではないことが一般的です。トランザクションテーブルのcustomeridにインデックスを登録します。それは確かにユニークではありません - どのようにエラーを引き起こすのでしょうか? – SMor