函数SELECT在SQL SERVER 2012中返回一行

时间:2017-05-30 11:29:15

标签: sql sql-server database sql-function

我想创建一个从我的表中获取最后一条记录的函数,但它不起作用。

我的代码是:

CREATE FUNCTION GetLastReglement (@CT_Num VARCHAR(17))
RETURNS VARCHAR(17)
AS
BEGIN
    SELECT TOP (1) * 
    FROM F_REGLEMENTT
    WHERE CT_Num=@CT_Num
    ORDER BY CT_Num DESC
RETURN @CT_Num
END

感谢您的帮助

PS:我是SQL的新手

4 个答案:

答案 0 :(得分:1)

您可以尝试使用以下一个来获取基于某个唯一列值的最后一行。

CREATE FUNCTION GetRowData
(
)RETURNS TABLE

AS RETURN ( SELECT TOP 1 * FROM F_REGLEMENTT ORDER BY CT_Num DESC ) END

答案 1 :(得分:1)

您可能需要使用下面的返回表

CREATE FUNCTION GetLastReglement (@CT_Num varchar(17))
returns @rtTable table
(
    --columns in your table F_REGLEMENTT with datatype as below
    col1 nvarchar(50)
    ...
)
as
begin
    insert into @rtTable
    select top (1) * 
    from F_REGLEMENTT
    where CT_Num=@CT_Num
    order by CT_Num desc
return;
end

答案 2 :(得分:0)

尝试返回整行而不是CT_Num,如下所示:

CREATE FUNCTION dbo.GetLastReglement (@CT_Num VARCHAR(17)
)
RETURNS TABLE as RETURN (
  SELECT top (1) * 
  FROM F_REGLEMENTT
  WHERE CT_Num=@CT_Num
  ORDER BY CT_Num DESC
)
END

答案 3 :(得分:0)

You could use the MAX function instead of top(1)*

CREATE FUNCTION [dbo].[GetLastReglement] ()
RETURNS TABLE
AS
RETURN
SELECT * FROM [F_REGLEMENT] WHERE CT_NUM =
(SELECT MAX(CT_NUM) FROM [F_REGLEMENT])