SQL Server 2005で実行されているT-SQLクエリがあり、アプリケーションに返されるデータのテーブルを定義しました。
それぞれが同じロジックを持ついくつかのcaseステートメントを使用していくつかの値を割り当てています。
同じロジックを複数回実行する代わりに、これをより効率的にする方法があるかどうか疑問に思っていますか?ここではロジックを省略しましたが、うまくいけば、要点を説明するのに十分です。同一の「pt.PTYP_CategoryIN(90、92、94、96、98)」ロジックを使用して3つのcaseステートメントを定義する必要がない方法はありますか?
`INSERT INTO @MemberAccountingDetail
(
MACD_DPST_FEES_RowID,
MACD_HighOrderSort,
MACD_CategorySortDate,
MACD_MemberName
)
SELECT
d.DPST_ID As MACD_DPST_FEES_RowID,
CASE
WHEN pt.PTYP_Category IN (90, 92, 94, 96, 98)
THEN 0
ELSE 1
END As MACD_HighOrderSort,
CASE
WHEN pt.PTYP_Category IN (90, 92, 94, 96, 98)
THEN DATEADD(ss, 1, d.DPST_TransactionDate)
ELSE @DefaultDate
END As MACD_CategorySortDate,
CASE
WHEN pt.PTYP_Category IN (90, 92, 94, 96, 98)
THEN pt.PTYP_CategoryDesc
ELSE SUBSTRING(ISNULL(d.DPST_OriginUserID, ''), 1, 11)
END As MACD_MemberName
FROM
Deposit d
INNER JOIN PaymentType pt
ON pt.PTYP_ID = d.DPST_PTYP_ID
WHERE
d.DPST_MEMB_ID = @MEMB_ID;
ありがとう、ジム `