相关疑难解决方法(0)

多语句表值函数与内联表值函数

举几个例子,只是说:

内联表值

CREATE FUNCTION MyNS.GetUnshippedOrders()
RETURNS TABLE
AS 
RETURN SELECT a.SaleId, a.CustomerID, b.Qty
    FROM Sales.Sales a INNER JOIN Sales.SaleDetail b
        ON a.SaleId = b.SaleId
        INNER JOIN Production.Product c ON b.ProductID = c.ProductID
    WHERE a.ShipDate IS NULL
GO
Run Code Online (Sandbox Code Playgroud)

多语句表值

CREATE FUNCTION MyNS.GetLastShipped(@CustomerID INT)
RETURNS @CustomerOrder TABLE
(SaleOrderID    INT         NOT NULL,
CustomerID      INT         NOT NULL,
OrderDate       DATETIME    NOT NULL,
OrderQty        INT         NOT NULL)
AS
BEGIN
    DECLARE @MaxDate DATETIME

    SELECT @MaxDate = MAX(OrderDate)
    FROM Sales.SalesOrderHeader
    WHERE CustomerID = @CustomerID

    INSERT @CustomerOrder
    SELECT a.SalesOrderID, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server user-defined-functions sql-server-2008

188
推荐指数
3
解决办法
20万
查看次数

T-SQL计算移动平均线

我正在使用SQL Server 2008 R2,尝试计算移动平均值.对于我视图中的每条记录,我想收集250条先前记录的值,然后计算此选择的平均值.

我的视图列如下:

TransactionID | TimeStamp           | Value | MovAvg
----------------------------------------------------
            1 | 01.09.2014 10:00:12 |     5 |    
            2 | 01.09.2014 10:05:34 |     3 | 
...
          300 | 03.09.2014 09:00:23 |     4 | 
Run Code Online (Sandbox Code Playgroud)

TransactionID是独特的.对于每一个TransactionID,我想计算列值的平均值,超过之前的250个记录.因此,对于TransactionID 300,收集前250行的所有值(视图按TransactionID降序排序),然后在MovAvg列中写入这些值的平均值的结果.我希望收集一系列记录中的数据.

sql t-sql sql-server-2008-r2 moving-average window-functions

16
推荐指数
2
解决办法
2万
查看次数

SQL Select语句用于计算运行平均列

我试图在SELECT语句中有一个基于同一SELECT语句中n个前一行的列的运行平均列.我需要的平均值基于结果集中的前n行.

让我解释

Id        Number       Average
 1             1          NULL
 2             3          NULL
 3             2          NULL
 4             4             2 <----- Average of (1, 3, 2),Numbers from previous 3 rows
 5             6             3 <----- Average of (3, 2, 4),Numbers from previous 3 rows
 .             .             .
 .             .             .
Run Code Online (Sandbox Code Playgroud)

Average列的前3行为null,因为之前没有行."平均值"列中的第4行显示前3行中"数字"列的平均值.

我需要一些帮助来尝试构建一个将执行此操作的SQL Select语句.

t-sql sql-server aggregate sql-server-2008

7
推荐指数
2
解决办法
2万
查看次数

如何在 MySQL 中声明内部表?

我想知道如何在 MySQL 中定义或声明内部表

我是 MySQL 的新手,我不知道语法

如您所见,我创建了存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `MySP`(
    actioncode VARCHAR(5),
    TNewsID BIGINT
)

BEGIN

IF actioncode = 1 then -- Retrive all from the database --
    select *
    from emp.tbnews;
elseIF actioncode = 2 then -- Retrive all from the database By NewsID --
    select NewsID,NewsSubject,NewsSubjectAR,NewsDetails,NewsDetailsAR,CreatedOn,DisplayOrder,
           AllowDisplay,img  
    from emp.tbnews
    Where NewsID=TNewsID;
elseIF actioncode = 3 then -- fkjskldfjklsdf --
    select NewsID,NewsSubject,NewsSubjectAR,NewsDetails,NewsDetailsAR,CreatedOn,DisplayOrder,
           AllowDisplay,img  
    from emp.tbnews;

 END IF;
 END
Run Code Online (Sandbox Code Playgroud)

我真正想要的是在 IF 语句之前声明内部表

在 Sql Server 中,我是这样做的

declare  @tbTemp table …
Run Code Online (Sandbox Code Playgroud)

mysql sql

2
推荐指数
1
解决办法
8884
查看次数