2 chenshiqiu chenshiqiu 于 2013.12.25 10:01 提问

存储过程:消息 156,级别 15,状态 关键字 'AND' 附近有语法错误。

USE [hazoon_insurance]
GO
/****** 对象: StoredProcedure [dbo].[p_bf_sgc] 脚本日期: 12/25/2013 08:58:06 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_bf_sgc]
@d1 INT,@d2 INT,@date1 VARCHAR(20),@date2 VARCHAR(20)
AS
IF @date1<>'' AND @date2<>''
IF @d1='0' AND @d2='0'
BEGIN
SELECT b.BI_NAME,sum(a.DCR_JG) AS bf1,count(a.DRC_ID) AS ts1,a.DCR_JG*100/sum(a.DCR_JG) AS zb1
FROM D_Car_Repair a,B_Insurance_Company b wherea.BI_ID =b.BI_ID group by a.BI_ID
AND a.DCR_ZF='0' AND a.DCR_STATE='2' AND CAST(a.DCR_ODATE AS DATETIME) BETWEEN @date1 AND @date2

    END
ELSE IF @d1='0'
    BEGIN

SELECT ly=@d2,b.BI_NAME,sum(a.DCR_JG) AS bf1,count(a.DRC_ID) AS ts1,a.DCR_JG*100/sum(a.DCR_JG) AS zb1
FROM D_Car_Repair a,B_Insurance_Company b where a.BI_ID =b.BI_ID group by a.BI_ID
AND a.DCR_ZF='0' AND a.DCR_STATE='2' AND CAST(a.DCR_ODATE AS DATETIME) BETWEEN @date1 AND @date2
END
ELSE IF @d2='0'
BEGIN
SELECT bxgs=@d1,b.BI_NAME,sum(a.DCR_JG) AS bf1,count(a.DRC_ID) AS ts1,a.DCR_JG*100/sum(a.DCR_JG) AS zb1
FROM D_Car_Repair a,B_Insurance_Company b where a.BI_ID =b.BI_ID group by a.BI_ID
AND a.DCR_ZF='0' AND a.DCR_STATE='2' AND CAST(a.DCR_ODATE AS DATETIME) BETWEEN @date1 AND @date2
END
ELSE
BEGIN
SELECT bxgs=@d1,ly=@d2,b.BI_NAME,sum(a.DCR_JG) AS bf1,count(a.DRC_ID) AS ts1,a.DCR_JG*100/sum(a.DCR_JG) AS zb1
FROM D_Car_Repair a,B_Insurance_Company b where a.BI_ID =b.BI_ID group by a.BI_ID
AND a.DCR_ZF='0' AND a.DCR_STATE='2' AND CAST(a.DCR_ODATE AS DATETIME) BETWEEN @date1 AND @date2
END

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SQL Server 的保留关键字
在SQL Server2000的查询分析器中查询表时,用一句简单的查询语句“ select * from USER ”,运行该语句后出现如下错误提示: 服务器: 消息 156,级别 15,状态 1,行 1 在关键字 'USER' 附近有语法错误。 原因在于,"USER"是SQL Server2000的保留关键字,解决方法有两种:一是将USER改为其他名字;二是给USER加上符号[ ],即查询
PIVOT 消息 102,级别 15,状态 1,第 5 行 '1029' 附近有语法错误
在Sql Server的帮助文档中,对Pivot函数是这样解释的: 可以使用 PIVOT 和 UNPIVOT 关系运算符对表值表达式进行操作以获得另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中所需的任何其余的列值执行聚合. 对第一次使用PIVOT函数的朋友来说,这样的解释很难让大家理解,下面编辑用PIVOT函数来实现一个行转列的功
sql 缺少注释的结尾标记 '*/'。 '*' 附近有语法错误。 在注释中包含 GO 命令会生成一个错误信息
缺少注释的结尾标记 */。 * 附近有语法错误。 /*... ...*/(注释)    表示用户提供的文本。服务器不对位于   /*   和   */   注释字符之间的文本进行评估。    注释可以插入单独行中,或者   Transact-SQL   语句中。多行的注释必须用   /*   和   */   指明。用于多行注释的样式规则是,第一行用   /*   开始,接下来
T-SQL compute与聚集函数的注意细节
①compute 和 compute by 子句 select 工号,姓名,职务,基本工资,部门编号 from 员工 compute count(工号) as 员工总数,avg(基本工资) 提示错误:消息 156,级别 15,状态 1,第 3 行 关键字 'as' 附近有语法错误。 解释:改子句中属性不能取别名,系统会自动分配cnt,avg作为列名 ②where中不可以使用聚集函数
【C#、SQL】创建存储过程报错,消息102,级别15,状态1
Create procedure [dbo].[proc_UploadPicture]   @ID int,  @Picture image  AS  update StudentInfo set Picture = @Picture  where ID = @ID 报错:' '是指空格报错,还有部分同学是'{'  或者 '('  等等报错 解决方法:仔细检查你的代码中的空格或者其他符号,
服务器: 消息 170,级别 15,状态 1,行 14解决方法
服务器: 消息 170,级别 15,状态 1,行 14 SELECT c.ThreeCantonNumber as areano,c.ThreeCantonName,(a.FirstCantonName+b.SecondCantonName+c.ThreeCantonName) as AreaName from( SELECT a.FirstCantonNumber,    b.Secon
因数据库兼容级别低导致列转行查询出错问题的处理
/*测试数据时发现,执行以下语句没有问题。其他数据库无法执行*/ Select ShangPinBH,A9999900000,E000050000 from (Select * from KuCunMX  --(1378 行受影响)        Where KuWeiBH in (A9999900000,E000050000) and ShuLiang > 0 ) a
sqlserver 2000_在关键字 'user' 附近有语法错误
在学校的时候写java程序,就遇到了这个问题,本来以为是数据库安装时候出错了,今天重新安装,仍然出现这个问题,百度了一下,才发现是一个很弱智的问题。服务器: 消息 156,级别 15,状态 1,行 1在关键字 user 附近有语法错误。原来user是SQL的关键字。因此在SQL中不能将表名取为user。否则就会报上述的错误。假
[Err] 42000 - [SQL Server]关键字 'SET' 附近有语法错误
1、错误描述[SQL]UPDATE SET remark = info_name FROM dbo.student_info [Err] 42000 - [SQL Server]关键字 'SET' 附近有语法错误。 UPDATE SET remark = info_name FROM dbo.student_info;2、错误原因3、解决办法
约束 'TABLE' 的定义中有语法错误,还请指点
create table student (studentid char(13)not null, constraint pk_student primary key clustered(studentid asc), studentname varchar(20) not null, classid char(10) null, constraint fk_class_student