存储过程总是报错。。。。

weixin_40220201 2017-09-13 09:45:22
ALTER PROCEDURE [dbo].[admin_zy_zyts]
(@kssj DATETIME,@jssj datetime)
AS
BEGIN

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc INTO #temp12 FROM bq_brbqxxk a,jb_ksbmk b WHERE a.bqdm=b.ksdm AND zt IN (4,5)
and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime)) AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime))
GROUP BY ksmc,rysj,cysj
SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts INTO #temp3 FROM #temp12
GROUP BY ksmc

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) wsnts,COUNT(djxh) wsnrc
INTO #temp1
FROM bq_brbqxxk a,jb_ksbmk b WHERE a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime) AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts INTO #temp2 FROM #temp1 GROUP BY ksmc

SELECT * FROM #temp3 a,#temp2 b WHERE a.ksmc=b.ksmc

DROP TABLE #temp1
DROP TABLE #temp2
DROP TABLE #temp3
DROP TABLE #temp12
end

-----------------
报错内容
消息 207,级别 16,状态 1,过程 admin_zy_zyts,第 17 行
列名 'wsnts' 无效。
消息 207,级别 16,状态 1,过程 admin_zy_zyts,第 17 行
列名 'wsnrc' 无效。

------------
也测试过
DECLARE @kssj DATETIME
SET @kssj=convert(DATEtime,'2017-01-01')
DECLARE @jssj DATETIME
SET @jssj=convert(DATEtime,'2017-02-01')

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) wsnts,COUNT(djxh) wsnrc
INTO #temp1
FROM bq_brbqxxk a,jb_ksbmk b WHERE a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime) AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)
GROUP BY ksmc,rysj,cysj
SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts INTO #temp2 FROM #temp1 GROUP BY ksmc

SELECT * FROM #temp2
结果:康复科 15.55172
骨二科 7.3379
五官科 5.623656
外二科 7.879845
外一科 6.416667
外三科 9.106667
骨一科 8.373333
妇科 3.788679
内三科 8.63587
急诊科 7
内一科 8.902857
血液净化中心 36.66667
内二科 7.778816
感染科 12.41667
儿一科 5.223065
产科 1.202041
内四科 11.44086
眼科 2.896175
儿二科 4.286325
都没问题。。。。。。但是一写存储过程这一段就报错。。。
...全文
586 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-09-13
  • 打赏
  • 举报
回复
是看#temp1表里的列名。。结果不重要
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 20 楼 sinat_28984567 的回复:
[quote=引用 17 楼 weixin_40220201 的回复:] [quote=引用 16 楼 sinat_28984567 的回复:]
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)
 
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj
 
        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
 
 
 
        DROP TABLE #temp1
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
产科 0 9 产科 1 292 妇科 1 1 骨一科 1 1 眼科 1 5 产科 2 5 儿一科 2 3 妇科 2 16 骨二科 2 1 骨一科 2 1 内二科 2 1 内三科 2 2 内四科 2 1 内一科 2 1 眼科 2 2 产科 3 2 儿二科 3 4 儿一科 3 2 妇科 3 76 骨二科 3 1 内二科 3 1 内三科 3 4 外一科 3 2 五官科 3 1 血液净化中心 3 1 儿二科 4 5 儿一科 4 2 妇科 4 59 骨二科 4 1 内二科 4 2 内三科 4 1 内四科 4 2 内一科 4 2 外二科 4 3 外一科 4 2 五官科 4 1 儿二科 5 3 儿一科 5 5 妇科 5 7 骨二科 5 1 骨一科 5 2 内二科 5 2 内三科 5 1 内四科 5 1 内一科 5 2 外二科 5 1 外一科 5 1 五官科 5 1 儿二科 6 5 儿一科 6 1 妇科 6 2 骨二科 6 1 内二科 6 2 外二科 6 2 儿二科 7 3 妇科 7 1 感染科 7 1 骨二科 7 1 骨一科 7 2 外二科 7 1 外一科 7 1 五官科 7 1 儿二科 8 4 儿一科 8 3 骨一科 8 1 内四科 8 1 内一科 8 2 外二科 8 1 血液净化中心 8 1 儿一科 9 1 妇科 9 1 感染科 9 2 内一科 9 2 内三科 10 2 外二科 10 1 外三科 10 2 外一科 10 1 内二科 11 1 内四科 11 2 内一科 11 1 外二科 11 1 感染科 12 1 内二科 12 1[/quote] 什么意思?[/quote] 查询出来的结果。
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 19 楼 qq_37170555 的回复:
[quote=引用 18 楼 weixin_40220201 的回复:]
[quote=引用 15 楼 qq_37170555 的回复:]
[quote=引用 10 楼 weixin_40220201 的回复:]
[quote=引用 8 楼 sinat_28984567 的回复:]
[quote=引用 6 楼 qq_37170555 的回复:]
[quote=引用 3 楼 weixin_40220201 的回复:]
---------------
(7427 行受影响)

(19 行受影响)

(560 行受影响)

(560 行受影响)
消息 3701,级别 11,状态 5,过程 admin_zy_zyts,第 44 行
无法对 表 '#temp2' 执行 删除,因为它不存在,或者您没有所需的权限。


ALTER PROCEDURE [dbo].[admin_zy_zyts]
(@kssj DATETIME,@jssj datetime)
AS
BEGIN
SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc
INTO #temp12
FROM bq_brbqxxk a,jb_ksbmk b
WHERE a.bqdm=b.ksdm AND zt IN (4,5)
and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime))
AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime))
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts
INTO #temp3
FROM #temp12
GROUP BY ksmc

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) as wsnts,COUNT(djxh) as wsnrc
INTO #temp1
FROM bq_brbqxxk a,jb_ksbmk b
WHERE a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime)
AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)
GROUP BY ksmc,rysj,cysj

SELECT * FROM #temp1

--1.先把下面都这些注释,用上面的语句看下#temp1的字段是不是wsnts,wsnrc,如果可以执行出结果,那么就说明#temp1没有问题;
--2.然后把下面这两句去掉注释,再执行,如果也不报错的话那就说明也没问题
--SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts
--INTO #temp2
--FROM #temp1 GROUP BY ksmc

--SELECT * FROM #temp2

--SELECT *
--FROM #temp3 a,#temp2 b
--WHERE a.ksmc=b.ksmc

DROP TABLE #temp1
--DROP TABLE #temp2
DROP TABLE #temp3
DROP TABLE #temp12
END

你把运行这个出来的结果截图出来看看,也就是SELECT * FROM #temp1的结果,类似于这个

[/quote]
二月十六 2017-09-13
  • 打赏
  • 举报
回复
引用 17 楼 weixin_40220201 的回复:
[quote=引用 16 楼 sinat_28984567 的回复:]
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)
 
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj
 
        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
 
 
 
        DROP TABLE #temp1
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
产科 0 9 产科 1 292 妇科 1 1 骨一科 1 1 眼科 1 5 产科 2 5 儿一科 2 3 妇科 2 16 骨二科 2 1 骨一科 2 1 内二科 2 1 内三科 2 2 内四科 2 1 内一科 2 1 眼科 2 2 产科 3 2 儿二科 3 4 儿一科 3 2 妇科 3 76 骨二科 3 1 内二科 3 1 内三科 3 4 外一科 3 2 五官科 3 1 血液净化中心 3 1 儿二科 4 5 儿一科 4 2 妇科 4 59 骨二科 4 1 内二科 4 2 内三科 4 1 内四科 4 2 内一科 4 2 外二科 4 3 外一科 4 2 五官科 4 1 儿二科 5 3 儿一科 5 5 妇科 5 7 骨二科 5 1 骨一科 5 2 内二科 5 2 内三科 5 1 内四科 5 1 内一科 5 2 外二科 5 1 外一科 5 1 五官科 5 1 儿二科 6 5 儿一科 6 1 妇科 6 2 骨二科 6 1 内二科 6 2 外二科 6 2 儿二科 7 3 妇科 7 1 感染科 7 1 骨二科 7 1 骨一科 7 2 外二科 7 1 外一科 7 1 五官科 7 1 儿二科 8 4 儿一科 8 3 骨一科 8 1 内四科 8 1 内一科 8 2 外二科 8 1 血液净化中心 8 1 儿一科 9 1 妇科 9 1 感染科 9 2 内一科 9 2 内三科 10 2 外二科 10 1 外三科 10 2 外一科 10 1 内二科 11 1 内四科 11 2 内一科 11 1 外二科 11 1 感染科 12 1 内二科 12 1[/quote] 什么意思?
听雨停了 2017-09-13
  • 打赏
  • 举报
回复
引用 18 楼 weixin_40220201 的回复:
[quote=引用 15 楼 qq_37170555 的回复:]
[quote=引用 10 楼 weixin_40220201 的回复:]
[quote=引用 8 楼 sinat_28984567 的回复:]
[quote=引用 6 楼 qq_37170555 的回复:]
[quote=引用 3 楼 weixin_40220201 的回复:]
---------------
(7427 行受影响)

(19 行受影响)

(560 行受影响)

(560 行受影响)
消息 3701,级别 11,状态 5,过程 admin_zy_zyts,第 44 行
无法对 表 '#temp2' 执行 删除,因为它不存在,或者您没有所需的权限。


ALTER PROCEDURE [dbo].[admin_zy_zyts]
(@kssj DATETIME,@jssj datetime)
AS
BEGIN
SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc
INTO #temp12
FROM bq_brbqxxk a,jb_ksbmk b
WHERE a.bqdm=b.ksdm AND zt IN (4,5)
and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime))
AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime))
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts
INTO #temp3
FROM #temp12
GROUP BY ksmc

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) as wsnts,COUNT(djxh) as wsnrc
INTO #temp1
FROM bq_brbqxxk a,jb_ksbmk b
WHERE a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime)
AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)
GROUP BY ksmc,rysj,cysj

SELECT * FROM #temp1

--1.先把下面都这些注释,用上面的语句看下#temp1的字段是不是wsnts,wsnrc,如果可以执行出结果,那么就说明#temp1没有问题;
--2.然后把下面这两句去掉注释,再执行,如果也不报错的话那就说明也没问题
--SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts
--INTO #temp2
--FROM #temp1 GROUP BY ksmc

--SELECT * FROM #temp2

--SELECT *
--FROM #temp3 a,#temp2 b
--WHERE a.ksmc=b.ksmc

DROP TABLE #temp1
--DROP TABLE #temp2
DROP TABLE #temp3
DROP TABLE #temp12
END

你把运行这个出来的结果截图出来看看,也就是SELECT * FROM #temp1的结果,类似于这个

weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 15 楼 qq_37170555 的回复:
[quote=引用 10 楼 weixin_40220201 的回复:] [quote=引用 8 楼 sinat_28984567 的回复:] [quote=引用 6 楼 qq_37170555 的回复:] [quote=引用 3 楼 weixin_40220201 的回复:] 加了AS问题依旧。
那两个零时表查询出来的数据字段对的吗?[/quote] 没有零的。我检测过。[/quote] 什么没有零的啊,我是说零时表#temp1和#temp2的字段对不对。你用下面的方法试下看

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc I
NTO #temp12 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm AND zt IN (4,5) 
and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime))  
AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)) 
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts 
INTO #temp3 
FROM #temp12
GROUP BY ksmc
 
SELECT ksmc,DATEDIFF(DAY,rysj,cysj) as wsnts,COUNT(djxh) as wsnrc
INTO #temp1 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime) 
AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime) 
GROUP BY ksmc,rysj,cysj

SELECT * FROM #temp1
 
--1.先把下面都这些注释,用上面的语句看下#temp1的字段是不是wsnts,wsnrc,如果可以执行出结果,那么就说明#temp1没有问题;
--2.然后把下面这两句去掉注释,再执行,如果也不报错的话那就说明也没问题
--SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts 
--INTO #temp2 
--FROM #temp1 GROUP BY ksmc
 
--SELECT * FROM #temp2
                   
--SELECT * 
--FROM #temp3 a,#temp2 b 
--WHERE a.ksmc=b.ksmc

DROP TABLE #temp1
DROP TABLE #temp2
DROP TABLE #temp3
DROP TABLE #temp12
END
[/quote] --------------- (7427 行受影响) (19 行受影响) (560 行受影响) (560 行受影响) 消息 3701,级别 11,状态 5,过程 admin_zy_zyts,第 44 行 无法对 表 '#temp2' 执行 删除,因为它不存在,或者您没有所需的权限。
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 16 楼 sinat_28984567 的回复:
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)
 
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj
 
        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
 
 
 
        DROP TABLE #temp1
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
产科 0 9 产科 1 292 妇科 1 1 骨一科 1 1 眼科 1 5 产科 2 5 儿一科 2 3 妇科 2 16 骨二科 2 1 骨一科 2 1 内二科 2 1 内三科 2 2 内四科 2 1 内一科 2 1 眼科 2 2 产科 3 2 儿二科 3 4 儿一科 3 2 妇科 3 76 骨二科 3 1 内二科 3 1 内三科 3 4 外一科 3 2 五官科 3 1 血液净化中心 3 1 儿二科 4 5 儿一科 4 2 妇科 4 59 骨二科 4 1 内二科 4 2 内三科 4 1 内四科 4 2 内一科 4 2 外二科 4 3 外一科 4 2 五官科 4 1 儿二科 5 3 儿一科 5 5 妇科 5 7 骨二科 5 1 骨一科 5 2 内二科 5 2 内三科 5 1 内四科 5 1 内一科 5 2 外二科 5 1 外一科 5 1 五官科 5 1 儿二科 6 5 儿一科 6 1 妇科 6 2 骨二科 6 1 内二科 6 2 外二科 6 2 儿二科 7 3 妇科 7 1 感染科 7 1 骨二科 7 1 骨一科 7 2 外二科 7 1 外一科 7 1 五官科 7 1 儿二科 8 4 儿一科 8 3 骨一科 8 1 内四科 8 1 内一科 8 2 外二科 8 1 血液净化中心 8 1 儿一科 9 1 妇科 9 1 感染科 9 2 内一科 9 2 内三科 10 2 外二科 10 1 外三科 10 2 外一科 10 1 内二科 11 1 内四科 11 2 内一科 11 1 外二科 11 1 感染科 12 1 内二科 12 1
二月十六 2017-09-13
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)
 
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc
 
        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj
 
        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
 
 
 
        DROP TABLE #temp1
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
听雨停了 2017-09-13
  • 打赏
  • 举报
回复
引用 10 楼 weixin_40220201 的回复:
[quote=引用 8 楼 sinat_28984567 的回复:] [quote=引用 6 楼 qq_37170555 的回复:] [quote=引用 3 楼 weixin_40220201 的回复:] 加了AS问题依旧。
那两个零时表查询出来的数据字段对的吗?[/quote] 没有零的。我检测过。[/quote] 什么没有零的啊,我是说零时表#temp1和#temp2的字段对不对。你用下面的方法试下看

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc I
NTO #temp12 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm AND zt IN (4,5) 
and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime))  
AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)) 
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts 
INTO #temp3 
FROM #temp12
GROUP BY ksmc
 
SELECT ksmc,DATEDIFF(DAY,rysj,cysj) as wsnts,COUNT(djxh) as wsnrc
INTO #temp1 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm AND zt IN (4,5)
AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime) 
AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime) 
GROUP BY ksmc,rysj,cysj

SELECT * FROM #temp1
 
--1.先把下面都这些注释,用上面的语句看下#temp1的字段是不是wsnts,wsnrc,如果可以执行出结果,那么就说明#temp1没有问题;
--2.然后把下面这两句去掉注释,再执行,如果也不报错的话那就说明也没问题
--SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts 
--INTO #temp2 
--FROM #temp1 GROUP BY ksmc
 
--SELECT * FROM #temp2
                   
--SELECT * 
--FROM #temp3 a,#temp2 b 
--WHERE a.ksmc=b.ksmc

DROP TABLE #temp1
DROP TABLE #temp2
DROP TABLE #temp3
DROP TABLE #temp12
END
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 13 楼 sinat_28984567 的回复:
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)

        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1



        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
------------------------------ (543 行受影响) (19 行受影响) (83 行受影响) (83 行受影响) 消息 3701,级别 11,状态 5,过程 admin_zy_zyts,第 52 行 无法对 表 '#temp2' 执行 删除,因为它不存在,或者您没有所需的权限。
二月十六 2017-09-13
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)

        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1



        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 11 楼 sinat_28984567 的回复:
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)

        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
--------------------------------- (543 行受影响) (19 行受影响) (83 行受影响) 消息 8120,级别 16,状态 1,过程 admin_zy_zyts,第 46 行 选择列表中的列 '#temp1.wsnts' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
二月十六 2017-09-13
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                DATEDIFF(DAY, rysj, cysj)

        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 8 楼 sinat_28984567 的回复:
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                rysj ,
                cysj
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
--------------------------------------- 消息 8120,级别 16,状态 1,过程 admin_zy_zyts,第 46 行 选择列表中的列 '#temp1.wsnts' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
引用 6 楼 qq_37170555 的回复:
[quote=引用 3 楼 weixin_40220201 的回复:] 加了AS问题依旧。
那两个零时表查询出来的数据字段对的吗?[/quote] 没有零的。我检测过。
顺势而为1 2017-09-13
  • 打赏
  • 举报
回复
将这些放到存储过程中一步步测,看哪里出了问题 DECLARE @kssj DATETIME SET @kssj=convert(DATEtime,'2017-01-01') DECLARE @jssj DATETIME SET @jssj=convert(DATEtime,'2017-02-01')


ALTER PROCEDURE [dbo].[admin_zy_zyts]
(@kssj DATETIME,@jssj datetime)
AS
BEGIN

DECLARE @kssj DATETIME
SET @kssj=convert(DATEtime,'2017-01-01')
DECLARE @jssj DATETIME
SET @jssj=convert(DATEtime,'2017-02-01')


SELECT ksmc,DATEDIFF(DAY,rysj,cysj) qnts,COUNT(djxh) qnrc 
INTO #temp12 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm 
       AND zt IN (4,5) 
       and cysj>=dateadd(year,-1,cast(convert(varchar(8),@kssj,23)+'01' as datetime))  
       AND cysj<dateadd(month,-11,cast(convert(varchar(8),@jssj+31,23)+'01' as datetime)) 
GROUP BY ksmc,rysj,cysj

SELECT ksmc,CONVERT(REAL,SUM(qnts))/CONVERT(REAL,COUNT(qnrc)) AS jnpjts 
INTO #temp3 
FROM #temp12
GROUP BY ksmc

SELECT ksmc,DATEDIFF(DAY,rysj,cysj) wsnts,COUNT(djxh) wsnrc 
INTO #temp1 
FROM bq_brbqxxk a,jb_ksbmk b 
WHERE  a.bqdm=b.ksdm 
       AND zt IN (4,5)
       AND cysj>cast(convert(varchar(8),@kssj,23)+'01' as datetime) 
       AND cysj<cast(convert(varchar(8),@jssj+31,23)+'01' as datetime) 
GROUP BY ksmc,rysj,cysj


SELECT ksmc,CONVERT(REAL,SUM(wsnts))/CONVERT(REAL,COUNT(wsnrc)) AS jnpjts 
INTO #temp2 
FROM #temp1 
GROUP BY ksmc

SELECT * 
FROM #temp3 a,#temp2 b 
WHERE a.ksmc=b.ksmc


二月十六 2017-09-13
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                rysj ,
                cysj
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
		        DATEDIFF(DAY, rysj, cysj) 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
二月十六 2017-09-13
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                rysj ,
                cysj
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc 
                --rysj , 这两列没有在select中,所以报错了
                --cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
听雨停了 2017-09-13
  • 打赏
  • 举报
回复
引用 3 楼 weixin_40220201 的回复:
加了AS问题依旧。
那两个零时表查询出来的数据字段对的吗?
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
先查一下临时表中的数据列名
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                rysj ,
                cysj
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                rysj ,
                cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
切了另一个服务器库报 消息 8120,级别 16,状态 1,过程 admin_zy_zyts,第 45 行 选择列表中的列 '#temp1.wsnts' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。唉。。迷茫
weixin_40220201 2017-09-13
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
先查一下临时表中的数据列名
ALTER PROCEDURE [dbo].[admin_zy_zyts]
    (
      @kssj DATETIME ,
      @jssj DATETIME
    )
AS
    BEGIN

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) qnts ,
                COUNT(djxh) qnrc
        INTO    #temp12
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj >= DATEADD(YEAR, -1,
                                    CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME))
                AND cysj < DATEADD(MONTH, -11,
                                   CAST(CONVERT(VARCHAR(8), @jssj + 31, 23)
                                   + '01' AS DATETIME))
        GROUP BY ksmc ,
                rysj ,
                cysj
        SELECT  ksmc ,
                CONVERT(REAL, SUM(qnts)) / CONVERT(REAL, COUNT(qnrc)) AS jnpjts
        INTO    #temp3
        FROM    #temp12
        GROUP BY ksmc

        SELECT  ksmc ,
                DATEDIFF(DAY, rysj, cysj) wsnts ,
                COUNT(djxh) wsnrc
        INTO    #temp1
        FROM    bq_brbqxxk a ,
                jb_ksbmk b
        WHERE   a.bqdm = b.ksdm
                AND zt IN ( 4, 5 )
                AND cysj > CAST(CONVERT(VARCHAR(8), @kssj, 23) + '01' AS DATETIME)
                AND cysj < CAST(CONVERT(VARCHAR(8), @jssj + 31, 23) + '01' AS DATETIME)
        GROUP BY ksmc ,
                rysj ,
                cysj

        SELECT  *  --这里看一下#temp1中的数据列名到底是什么
        FROM    #temp1
        GROUP BY ksmc


        DROP TABLE #temp1
        DROP TABLE #temp2
        DROP TABLE #temp3
        DROP TABLE #temp12
    END
---- 消息 8120,级别 16,状态 1,过程 admin_zy_zyts,第 45 行 选择列表中的列 '#temp1.ts' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
加载更多回复(5)

22,207

社区成员

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

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