次のようなストアド プロシージャがあります。
ALTER PROCEDURE [dbo].[Performance]
@startdate NVARCHAR(100),
@enddate NVARCHAR(100)
AS
BEGIN
SET NOCOUNT ON;
SELECT
l.LocName
,v.Vtype
,SUM(DATEDIFF(MI, t.Paydate, t.DelDate)) AS TotalDiff
,CONVERT(DECIMAL(10, 1), AVG(CONVERT(NUMERIC(18, 2), DATEDIFF(MI, t.Paydate, t.DelDate)))) AS Average
FROM Transaction_tbl t
LEFT JOIN VType_tbl v ON t.vtid = v.vtid
LEFT JOIN Location_tbl l ON t.Locid = l.Locid
WHERE t.Locid IN
(
SELECT t1.Locid
FROM Transaction_tbl t1
)
AND dtime BETWEEN '' + @startdate + '' AND '' + @enddate + ''
AND status >= 5
GROUP BY
v.Vtype
,l.LocName
,l.Locid
ORDER BY l.Locid
END
LocName Vtype TotalDiff Average
Fashion Avenue VIP 84 2.1
Fashion Avenue Normal 14007 200.1
Address Hotel Normal 33169 1745.7
この出力では、平均は分単位で表示されます。平均を HH:MM(時間、分) で表示したいので、時間と分で平均を取得するための別のストアド プロシージャとして書きました。そのストアド プロシージャは次のようになります。
ALTER PROCEDURE [dbo].[test] @locid INT
AS
BEGIN
DECLARE
@Mns DECIMAL
,@dec DECIMAL
SELECT @dec = AVG(CONVERT(NUMERIC(18, 2), DATEDIFF(MI, t.Paydate, t.DelDate)))
FROM Transaction_tbl t
WHERE Locid = @locid;
SELECT @Mns = @dec % 60;
SELECT Avearge =
CONVERT(VARCHAR(10), (CONVERT(DECIMAL(10), @dec / 60))) + ':'
+ CONVERT(VARCHAR, @Mns)
END
ここで出てきます このように: 平均 29:6. 最初のストアド プロシージャで平均値を取得する代わりに、最初のストアド プロシージャでこの平均値を表示したいので、最初のストアド プロシージャ内にこのストアド プロシージャを書き込む方法、またはこの平均値を取得する他の方法はありますか最初のストアド プロシージャで