Sun*_*Lim 1 sql t-sql stored-procedures sql-server-2005
我是一个sql新手,我使用的是mssql2005
我喜欢在输入参数上加入Action depnding.
CREATE PROCEDURE SelectPeriodicLargeCategoryData
@CATEGORY_LEVEL CHAR(1),
@CATEGORY_CODE VARCHAR(9)
AS
...
JOIN CATEGORY_AD_SYS CAS WITH(NOLOCK)
ON CA.CATEGORY_ID = [[[[[ HERE ]]]]
Run Code Online (Sandbox Code Playgroud)
在sql之上.
如果@CATEGORY_LEVEL = 'L'那时我喜欢加入 CAS.LCATEGORY
否则,如果@CATEGORY_LEVEL = 'M'我愿意加入 CAS.MCATEGORY
否则,如果@CATEGORY_LEVEL = 'S'我愿意加入 CAS.SCATEGORY
...
我怎样才能做到这一点?
您可以使用如下CASE表达式:
CASE @CATEGORY_LEVEL
WHEN 'L' THEN CAS.LCATEGORY
WHEN 'M' THEN CAS.MCATEGORY
WHEN 'S' THEN CAS.SCATEGORY
END
Run Code Online (Sandbox Code Playgroud)
我不知道有多快,这将是一个JOIN的ON条件(取决于查询优化器如何聪明也差不多了,当然了,所以你最好用真实的数据测量检查) -如果事实证明有不可接受的性能,我想你可以使用完全不同的SELECT语句,这取决于@CATEGORY_LEVEL最后的手段.
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |