CREATE PROCEDURE RP1304 @CHOOSE char(2),@DATE1 char(8),@DATE2 char(8) ASIF @CHOOSE='1I' --品名前10大(未結案)
BEGIN
 SELECT TOP 10 ITEM,SUM(FAILCOST) AS SFAILCOST FROM PQM20 WHERE ITEM IS NOT NULL
 GROUP BY ITEM ORDER BY SFAILCOST DESC
END ELSE 
IF @CHOOSE='2I' --品名前10大(已結案)
BEGIN
 SELECT TOP 10 ITEM,SUM(FAILCOST) AS SFAILCOST FROM PQMTDM20 WHERE ITEM IS NOT NULL
 AND DATE>=@DATE1 AND DATE<=@DATE2 GROUP BY ITEM ORDER BY SFAILCOST DESC
END ELSE 
IF @CHOOSE='1C' --客戶前5大(未結案)
BEGIN
 SELECT TOP 5 SUBSTRING(ITEM,1,2) AS ITEM,SUM(FAILCOST) AS SFAILCOST FROM PQM20
 WHERE ITEM IS NOT NULL GROUP BY SUBSTRING(ITEM,1,2) ORDER BY SFAILCOST DESC
END ELSE
IF @CHOOSE='2C' --客戶前5大(已結案)
BEGIN
 SELECT TOP 5 SUBSTRING(ITEM,1,2) AS ITEM,SUM(FAILCOST) AS SFAILCOST FROM PQMTDM20
 WHERE ITEM IS NOT NULL AND DATE>=@DATE1 AND DATE<=@DATE2 
 GROUP BY SUBSTRING(ITEM,1,2) ORDER BY SFAILCOST DESC
END ELSE
IF SUBSTRING(@CHOOSE,1,1)='3' --(全部)
BEGIN
 SELECT ITEM,FAILCOST,DATE INTO #TEMP FROM PQM20 ------出错语句行
 UNION ALL 
 SELECT ITEM,FAILCOST,DATE FROM PQMTDM20 --合併PQM20,PQMTDM20至#TEMP IF SUBSTRING(@CHOOSE,2,1)='I'  --品名前10大
 BEGIN
   SELECT TOP 10 ITEM,SUM(FAILCOST) AS SFAILCOST FROM #TEMP WHERE ITEM IS NOT NULL
   AND DATE>=@DATE1 AND DATE<=@DATE2 GROUP BY ITEM ORDER BY SFAILCOST DESC
 END ELSE IF SUBSTRING(@CHOOSE,2,1)='C'  --客戶前5大 
 BEGIN
   SELECT TOP 5 SUBSTRING(ITEM,1,2) AS ITEM,SUM(FAILCOST) AS SFAILCOST FROM #TEMP
   WHERE ITEM IS NOT NULL AND DATE>=@DATE1 AND DATE<=@DATE2
   GROUP BY SUBSTRING(ITEM,1,2) ORDER BY SFAILCOST DESC
 END
 DROP TABLE #TEMP
END
GO执行后提示如下:
服务器: 消息 457,级别 16,状态 1,过程 RP1304,行 26
无法执行值从 varchar 到 varchar 的隐性转换,因为该值的排序规则因排序规则冲突而未能解决。我的SQL语句错在哪里?请各位指教.在此多谢.