帮忙看段sql

a284280221 2012-05-22 04:38:24
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON
GO

ALTER PROCEDURE CROSSTAB
AS
BEGIN
DECLARE @AREANAME VARCHAR(50)
DECLARE @F_CLASS2 VARCHAR(50)
DECLARE @AR_MONEY DECIMAL(18,2)
DECLARE @CREATESQL VARCHAR(200)
DECLARE @INSERTSQL VARCHAR(200)

CREATE TABLE #TMP(项目 VARCHAR(50))
DECLARE CREATECURSOR CURSOR FOR SELECT DISTINCT AREANAME FROM DINING_AREA
DECLARE INSERTCURSOR CURSOR FOR SELECT ISNULL(SUM(AR_MONEY),0) AS AR_MONEY,F_CLASS2,AREANAME FROM (SELECT ISNULL(SUM(AR_MONEY),0) AS AR_MONEY,F_CLASS2,(SELECT AREANAME FROM DINING_AREA WHERE ID=(SELECT AREAID FROM DISHTABLE WHERE ID=(SELECT TABLEID FROM TABLEORDERS WHERE ID=(SELECT TABLEORDERSID FROM ORDERDISH WHERE ID=O.ID)))) AS AREANAME FROM ORDERDISH O GROUP BY F_CLASS2,ID) A GROUP BY F_CLASS2,AREANAME ORDER BY F_CLASS2,AREANAME
OPEN CREATECURSOR
FETCH NEXT FROM CREATECURSOR INTO @AREANAME
WHILE @@FETCH_STATUS=0
BEGIN
IF NOT @AREANAME IS NULL
BEGIN
SET @CREATESQL='ALTER TABLE #TMP ADD '+@AREANAME+' DECIMAL(18,2)'
EXEC(@CREATESQL)

END
FETCH NEXT FROM CREATECURSOR INTO @AREANAME
END

OPEN INSERTCURSOR
FETCH NEXT FROM INSERTCURSOR INTO @AR_MONEY,@F_CLASS2,@AREANAME
WHILE @@FETCH_STATUS=0
BEGIN
SET @INSERTSQL='INSERT INTO #TMP (项目,'+ @AREANAME +') VALUES('''+ @F_CLASS2 +''','+ @AR_MONEY +')'
EXEC(@INSERTSQL)
FETCH NEXT FROM INSERTCURSOR INTO @AR_MONEY,@F_CLASS2,@AREANAME
END
CLOSE CREATECURSOR
DEALLOCATE CREATECURSOR
CLOSE INSERTCURSOR
DEALLOCATE INSERTCURSOR

END




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO




...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a284280221 2012-05-23
  • 打赏
  • 举报
回复
感谢大虾
  • 打赏
  • 举报
回复
SET @INSERTSQL='INSERT INTO #TMP (项目,'+ ltrim(@AREANAME) +') VALUES('''+ ltrim(@F_CLASS2 )+''','+ltrim( @AR_MONEY )+')'
a284280221 2012-05-22
  • 打赏
  • 举报
回复
SET @INSERTSQL='INSERT INTO #TMP (项目,'+ @AREANAME +') VALUES('''+ @F_CLASS2 +''','+ @AR_MONEY +')'

这句有问题
a284280221 2012-05-22
  • 打赏
  • 举报
回复
将数据类型 varchar 转换为 numeric 时出错。

报这个错 找不出来问题 折磨我一天了

谢谢 帮忙看下
孤独加百列 2012-05-22
  • 打赏
  • 举报
回复
把#tmp改成##tmp
  • 打赏
  • 举报
回复
看了然后呢?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧