我在 SQL Server 2005 上运行了一个 T-SQL 查询,我在其中定义了一个要返回给应用程序的数据表。
我使用几个case语句分配了几个值,每个case语句都有相同的逻辑。
我想知道是否有一种方法可以提高效率而不是多次执行相同的逻辑?我已经简化了这里的逻辑,但希望足以说明这一点。有没有一种方法我不必使用相同的“pt.PTYP_Category IN (90, 92, 94, 96, 98)”逻辑来定义三个案例语句?
`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;
谢谢你,吉姆`