これをユーザー定義関数に変換するにはどうすればよいですか? また、UDF にはいくつかの種類があることは知っていますが、この場合はどれが最適でしょうか? お手伝いありがとう。
SELECT TOP 10 ParkingSpotNumber
, count(*) as 'Usage'
FROM ParkingTransaction
GROUP BY ParkingSpotNumber
ORDER BY 'Usage' DESC
複数の列を返し、これを関数にしたいので、次を使用できます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 を参照してください
以下を試してください.....テーブルを返します...
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()