Sql server Can';t我们使用通过引用传递的参数创建SQL server函数;输出;?
SQL SERVER避免我们在SQL函数中将参数作为输出“通过引用传递” 它只允许我们在程序中这样做 在函数中有什么方法可以做到这一点吗 如果没有,请有人帮我在Select语句中赋值吗 像这个例子: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
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)次