SQL使用where子句中的变量等于

时间:2016-05-07 06:46:34

标签: sql variables sql-server-2000 declare

我正在尝试编写一个简单的SQL查询来解决一些较旧的SQL Server 2000的某些价格问题。问题是我们有6种不同的价格而且我会这样做以便我只需要更换一个看守即可获得这样做了。

我在顶部将变量声明为char并尝试将这些char放入语句中。对于平等后的部分,这是工作的一半。底部的代码正在运行。但我需要更改“dbo.dep_art.VB05”。 VB05中的5必须等于@ID。所以当我将@ID更改为4时,VB05必须是VB04。我尝试了dbo.dep_art.VB0@ID和dbo.dep_art.VB0& @ID,但这没效果。还尝试了第二个变量作为nvarchar并将其设置为dbo.dep_art.VB05,但这也出错了。

请记住:它是SQL Server 2000。

Declare @ID as char
set @ID = 5

/*.................*/

select distinct(dbo.dep_prs.ARTNR), 
    dbo.dep_art.Bezeichnung, 
    dbo.dep_prs.PR_Brutto 
from 
    dep_prs, dep_art 
where 
    dbo.dep_prs.ARTNR = dbo.dep_art.ARTNR 
    and dbo.dep_prs.Preisgruppe = 1 
    and dbo.dep_art.VB05 = 2 
    and dbo.dep_prs.LIdx = @ID 
     or dbo.dep_prs.ARTNR = dbo.dep_art.ARTNR 
    and dbo.dep_prs.Preisgruppe = 1 
    and dbo.dep_art.VB05 = 3 
    and dbo.dep_prs.LIdx = @ID
order by 
    dbo.dep_prs.artnr

1 个答案:

答案 0 :(得分:0)

如果你只有6个选项而且它不会发展得更远: 你可以使用if ...... else

我建议不要在2000版本中使用动态sql