У меня есть хранимая процедура, как это:записи хранимой процедуры внутри другой хранимой процедуры
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
в этом из положить мой средний показывает в минутах, я хочу, чтобы показать среднюю в ЧЧ: ММ (часы, минуты), так что я написал в виде отдельной хранимой процедуры для получения среднего в часах и минутах, что хранимая процедура выглядит так:
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
здесь я получаю из положить как это: Avearge 29: 6. insted получения среднего значения в первой хранимой процедуре. Я хочу показать эти средние значения в моей первой хранимой процедуре. Так как я могу записать этот хранимый процедурный код в первой процедуре хранилища, или это любой другой способ получить это среднее значение в первой хранимой процедуры
Используйте [FUNCTION] (http://msdn.microsoft.com/en-us/library/ms186755.aspx) вместо процедуры 'test' – bummi
, как я могу сделать that.I новичок в хранимом процедуре – user2603688