-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 に答える