我需要从3个表中提取数据,这些数据依赖于其他表的结果,所以我尝试使用if then else结构,但得到了语法错误。就SQL专业知识而言,我可能有些不知所措。我在第一个if附近生成了一个语法错误,随后在每个then附近生成了一个语法错误。这是一个简单的语法错误,还是我正在尝试做一些MS SQL 2000无法处理的事情?
感谢您的意见。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
Go
Begin
Declare @vCasinoName varchar(35)
select @vCasinoName = Description from Gen_Casino
Create Table #AG_Report
(Slotnumber int,
SRID varchar(30),
SerialNumber varchar(15),
CAsset varchar(30),
Mfr varchar(15),
Denomination numeric(12, 2),
Description varchar(30),
Par real,
EPROMID varchar(15),
EPROMID2 varchar(15),
EPROMIDXL varchar(30),
Jurisdiction varchar(30),
Bios varchar(30),
BootChip varchar(30),
VersionChip varchar(30),
CasinoName varchar(35),
)
insert into #AG_Report
select s.SlotNumber,
s.SerialNumber,
m.Manufacturer,
s.Denomination,
s.Description,
s.Par,
s.EPROMID,
s.EPROMID2,
if (CF.FieldID = 6)
BEGIN
CF.Value as SRID,
END
else if (CF.FieldID = 7)
BEGIN
CF.Value as CAsset,
END
else if (CF.FieldID = 9)
BEGIN
else if (CF.FieldID = 9)
BEGIN
CF.value as EPROMIDXL,
else if (CF.FieldID = 13)
BEGIN
CF.Value as Jurisdiction,
END
else if (CF.FieldID = 11)
BEGIN
CF.Value as Bios,
END
else if (CF.FieldID = 12)
BEGIN
CF.Value as BootChip,
END
else if (CF.FieldID = 14)
BEGIN
CF.Value as VersionChip,
END
from CDS_Slotmast S, BB_SlotMastCustomField CF,BB_Mfr M,
where S.SlotMast_id = CF.SlotMast_ID
and CF.Revision = S.Revision
and S.Active = "Y"
order by s.Denomination, s,SlotNumber
Select * from #AG_Report
End
发布于 2013-09-25 21:29:43
要详细说明@HABO所说的内容,而不是在select语句中这样做:
if (CF.FieldID = 6)
BEGIN
CF.Value as SRID,
END
else if (CF.FieldID = 7)
试试这个:
CASE
WHEN (CF.FieldID = 6) THEN 'SRID' --You can return a value from a field or have another case statement here if you need to.
WHEN (CF.FieldID = 7)
...Continue your code
ELSE
...If you want an ELSE
END --End the case statement
发布于 2013-09-25 21:30:51
在SQL Server中,不能在SELECT语句中使用IF。相反,您可以使用CASE语句。你也可以使用嵌套大小写,当
发布于 2013-09-26 14:11:59
case语句是在select中使用IF的正确方法,但是它看起来像您的语句,不管CF.FieldID的值是什么,您总是返回CF.Value,但是试图为列返回一个不同的别名。您真的不能这样做-结果集中的每一行的列别名都需要相同。但是在返回数据方面,您可以只在结果集中包含CF.FieldID和CF.Value,然后让应用程序代码来完成这项工作。
https://stackoverflow.com/questions/19015313
复制