我正在尝试编写一个简单的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
答案 0 :(得分:0)
如果你只有6个选项而且它不会发展得更远: 你可以使用if ...... else
我建议不要在2000版本中使用动态sql