2014-04-03 24 views
0

我需要插入@t总的行数,如果@total等于1SQL表中的计算,从临时表中的总行值函数

我怎么能这样做?

ALTER FUNCTION [dbo].[myfunction] 
( 
    @ID int = NULL, 
    @years int = NULL, 
    ,@total BIT = 0 
) 
RETURNS @t TABLE (
    RowNum int, 
    ID int, 
    years int, 
) 
AS 
BEGIN 
    INSERT INTO @t 
     SELECT 
      ROW_NUMBER() OVER(ORDER BY years) AS RowNum, 
      ID, 
      years, 
     FROM dbo.mytable 
     WHERE ..  

    RETURN 
END 

结果的外观应该是:

Total RowNum ID year 
------------------------------------- 
    3  1  101 2014 
    3  2  102 2015 
    3  3  103 2016 

谢谢!

回答

1
RETURNS @t TABLE (
    Total int, 
    RowNum int, 
    ID int, 
    years int, 
) 

... 

INSERT INTO @t 
     SELECT 
      NULL, 
      ROW_NUMBER() OVER(ORDER BY years) AS RowNum, 
      ID, 
      years, 
     FROM dbo.mytable 
     WHERE .. 

... 
IF(@total=1) BEGIN 
    DECLARE @Count INT 
    SELECT @Count=COUNT(*) FROM @t 
    UPDATE @t SET [email protected] 
END 
RETURN  
+0

非常感谢! –