-4

我将如何将其转换为用户定义的函数?另外,我知道有几种类型的 UDF……在这种情况下哪一种最好?感谢您的帮助。

SELECT TOP 10 ParkingSpotNumber
, count(*) as 'Usage'
  FROM ParkingTransaction
  GROUP BY ParkingSpotNumber
  ORDER BY 'Usage' DESC
4

2 回答 2

2

由于您返回的列不止一列并且您希望这是一个函数,因此您可以使用Table-Valued Function

create function Top_Parking_usage()
returns @ParkingCount table
(
  ParkingSpotNumber int not null,
  UsageCount int not null
)
as
BEGIN
  INSERT INTO @ParkingCount(ParkingSpotNumber, UsageCount)
  SELECT TOP 10 ParkingSpotNumber
    , count(*) as 'Usage'
  FROM ParkingTransaction
  GROUP BY ParkingSpotNumber
  ORDER BY 'Usage' DESC

  RETURN
END;
GO

然后当你调用它时,你将使用:

select *
from dbo.Top_Parking_usage()

请参阅带有演示的 SQL Fiddle

于 2013-01-21T14:39:15.120 回答
1

试试下面......它返回表格......

CREATE FUNCTION udf_GetParkingInfo()
RETURNS TABLE
AS
RETURN 
(
  SELECT TOP 10 ParkingSpotNumber
, count(*) as 'Usage'
  FROM ParkingTransaction
  GROUP BY ParkingSpotNumber
  ORDER BY 'Usage' DESC
);


SELECT * from udf_GetParkingInfo()
于 2013-01-21T14:43:29.500 回答