Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 Can';t我们使用通过引用传递的参数创建SQL server函数;输出;?_Sql Server_Sql Server 2005_Sql Server 2008_User Defined Functions - Fatal编程技术网

Sql server Can';t我们使用通过引用传递的参数创建SQL server函数;输出;?

Sql server Can';t我们使用通过引用传递的参数创建SQL server函数;输出;?,sql-server,sql-server-2005,sql-server-2008,user-defined-functions,Sql Server,Sql Server 2005,Sql Server 2008,User Defined Functions,SQL SERVER避免我们在SQL函数中将参数作为输出“通过引用传递” 它只允许我们在程序中这样做 在函数中有什么方法可以做到这一点吗 如果没有,请有人帮我在Select语句中赋值吗 像这个例子: Declare @X as float set @X select column1, column2, @X = @X+ column1+column2 FROM someView 要产生这样的结果,您可以尝试以下解决方案: SELECT s1.column1, s1.column2, su

SQL SERVER避免我们在SQL函数中将参数作为输出“通过引用传递” 它只允许我们在程序中这样做 在函数中有什么方法可以做到这一点吗

如果没有,请有人帮我在Select语句中赋值吗

像这个例子:

Declare @X as float
set @X 
select  column1, column2,  @X = @X+ column1+column2 FROM someView

要产生这样的结果,您可以尝试以下解决方案:

SELECT s1.column1, s1.column2, sum(s1.column1 + s1.columns2) as res 
FROM  someView s1 cross join someView s2 
WHERE s1.[OrderColum] <= s1.[OrderColum]
GROUP BY s1.column1, s1.columns2

要产生这样的结果,您可以尝试以下解决方案:

SELECT s1.column1, s1.column2, sum(s1.column1 + s1.columns2) as res 
FROM  someView s1 cross join someView s2 
WHERE s1.[OrderColum] <= s1.[OrderColum]
GROUP BY s1.column1, s1.columns2

您可以这样分配结果

Declare @X as float

select @X = sum(column1 + column2) 
FROM someView

要计算运行总工时(fast)

您可以这样分配结果

Declare @X as float

select @X = sum(column1 + column2) 
FROM someView

要计算运行总工时(fast)

这是递归CTE的作业:

WITH CTE AS (
  SELECT
    Column1,
    Column2,
    rownum = ROW_NUMBER() OVER (ORDER BY (SELECT 1))
  FROM someView
),
RecCTE AS (
  SELECT
    Column1,
    Column2,
    Total = Column1 + Column2
  FROM CTE
  WHERE rownum = 1
  UNION ALL
  SELECT
    c.Column1,
    c.Column2,
    Total = r.Total + c.Column1 + c.Column2
  FROM CTE c
    INNER JOIN RecCTE ON c.rownum = r.rownum + 1
)
SELECT *
FROM RecCTE

这是递归CTE的作业:

WITH CTE AS (
  SELECT
    Column1,
    Column2,
    rownum = ROW_NUMBER() OVER (ORDER BY (SELECT 1))
  FROM someView
),
RecCTE AS (
  SELECT
    Column1,
    Column2,
    Total = Column1 + Column2
  FROM CTE
  WHERE rownum = 1
  UNION ALL
  SELECT
    c.Column1,
    c.Column2,
    Total = r.Total + c.Column1 + c.Column2
  FROM CTE c
    INNER JOIN RecCTE ON c.rownum = r.rownum + 1
)
SELECT *
FROM RecCTE


那张桌子你是怎么点的?我不太明白你在这里想要达到什么目的。您想要一个带有计算列的结果集吗?您想返回一个值?LeftyX,他想得到的是select结果中每行上一列的总和。因此,如果行值是,(1,2,3),那么输出应该是(1,3,6)。@Vash:感谢他的澄清;-)好吧,那我也会像你那样做的!这是否更正确“我如何才能在SQL Server中获得运行总数”?您如何排序该表?我不太明白您在这里想要实现什么。您想要一个带有计算列的结果集吗?您想返回一个值?LeftyX,他想得到的是select结果中每行上一列的总和。因此,如果行值是,(1,2,3),那么输出应该是(1,3,6)。@Vash:感谢他的澄清;-)好吧,那我也会像你那样做的!这是否更正确“如何在SQL Server中获得运行总数”?您的第二个解决方案将给出垃圾结果:它仍然是一个随机顺序。您不能使用SELECT 1创建订单。你不能用交叉连接的ON子句。谢谢你,瓦什,你的第一个选择是work,我正在使用它,但我发现它需要时间!n次,这意味着只要你的数据是巨大的,就需要很多时间。。。所以使用for each将是更好的解决方案,但如果我找到一种在检索select语句中分配变量的方法,那么awesome@gbn,是的,这是不幸的,但我并没有发明顺序,只是序列值,所以这个语句是正确的,不会给出垃圾结果,你的第二个解决方案将给出垃圾结果:它仍然是一个随机顺序。您不能使用SELECT 1创建订单。你不能用交叉连接的ON子句。谢谢你,瓦什,你的第一个选择是work,我正在使用它,但我发现它需要时间!n次,这意味着只要你的数据是巨大的,就需要很多时间。。。所以使用for each将是更好的解决方案,但如果我找到一种在检索select语句中分配变量的方法,那么awesome@gbn,是的,这是不幸的,但我并没有发明顺序,只是序列值,所以这个语句是正确的,不会给出垃圾结果,它可以在那里使用column1代替。你可以使用它,但你不能选择其他列,因为你不能将select与检索数据selectas@gbn一起使用,这才是你真正想要的“运行总计”?是的,我需要运行总计,但我尝试了Vash显示它需要(N)个阶乘时间的方式,就像当数据超过5000行时,计算需要一分钟以上的时间,因为它可以计算!每行n次,所以我只需要知道在检索select语句中是否有分配变量的方法,这将有助于。。。但是,如果我们不能为每个状态使用,它只需要(N)个时间。你可以使用它,但你不能选择其他列,因为你不能将select与检索数据selectas@gbn一起使用。你真正想要的是“运行总计”吗?是的,我需要运行总计,但我已经尝试了Vash显示它需要的方式(N)阶乘时间,比如当数据超过5000行时,计算需要一分钟以上,因为它可以计算!每行n次,所以我只需要知道在检索select语句中是否有分配变量的方法,这将有助于。。。但是如果我们不能为每一个站使用,它只需要(N)次