Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server无法接受中值函数_Sql Server - Fatal编程技术网

Sql server SQL server无法接受中值函数

Sql server SQL server无法接受中值函数,sql-server,Sql Server,我写了这个中值函数,但它执行时有错误。。有人能告诉我密码有什么问题吗 BEGIN CREATE TABLE #ITEMORDERDETAILS ( ITEM CHAR(15), QTYSHP DECIMAL(21, 6), RQDATE DATETIME ) DECLARE @Median FLOAT DECLARE @ITEM CHAR(15) DECLARE @ORDERCNT

我写了这个中值函数,但它执行时有错误。。有人能告诉我密码有什么问题吗

BEGIN
    CREATE TABLE #ITEMORDERDETAILS
      (
         ITEM   CHAR(15),
         QTYSHP DECIMAL(21, 6),
         RQDATE DATETIME
      )

    DECLARE @Median FLOAT
    DECLARE @ITEM CHAR(15)
    DECLARE @ORDERCNT INT

    SET @ITEM=@ITEMN

    INSERT #ITEMORDERDETAILS
    SELECT ITEM,
           QTYSHP,
           RQDATE
    FROM   tbl123456
    WHERE  PRICE != '0'
           AND SALESMN != 'WB'
           AND RQDATE > ( getdate () - 180 )
           AND ITEM = @ITEM
    UNION
    SELECT ITEM,
           QTYSHP,
           RQDATE
    FROM   tbl123
    WHERE  PRICE != '0'
           AND SALESMN != 'WB'
           AND RQDATE > ( getdate () - 180 )
           AND ITEM = @ITEM

    SELECT @ORDERCNT = count (1)
    FROM   #ITEMORDERDETAILS

    --SELECT @ORDERCNT
    SELECT @Median = ( sum(QTYSHP) / @ORDERCNT )
    FROM   #ITEMORDERDETAILS

    SELECT @Median AS 'Median'

    --SELECT * from #ITEMORDERDETAILS
    DROP TABLE #ITEMORDERDETAILS

    RETURN @Median
END 
错误

Msg 2772,16级,状态1,程序 如果获取平均值、订单大小、中位数,则第34行无法访问临时值 函数中的表

Msg 2772,16级,状态1,程序 f_Get_Average_Order_Size_Median,第35行无法访问临时 函数中的表

Msg 2772,16级,状态1,程序 如果获取平均值、订单大小、中位数,第42行无法访问临时值 函数中的表

Msg 156,15级,状态1,程序 f_Get_Average_Order_Size_Median,第46行靠近 关键字“选择”


原因在您的错误消息中:

Line 34 Cannot access temporary tables from within a function
如果您创建了一个函数,那么您可以访问的内容是有限制的

但是,如果使用SQL Server2012,则不需要编写自己的中值函数,但可以使用


无法从函数中访问临时表
@table
可以改用变量。
PERCENTILE_DISC (0.5) WITHIN GROUP (ORDER BY XXXX) 
                      OVER (PARTITION BY YYYY) AS Median