SQLサーバーのマルチステートメントテーブル値関数の頭を悩ましていますが、以下のクエリを関数内で使用したいのですが、実行する方法や実行できるかどうか不明です、任意の方向が大幅にここ行を返すSQL関数
DECLARE @start_time DATETIME ='2016-6-27 07:00:00';
DECLARE @end_time DATETIME ='2016-6-27 15:00:00';
DECLARE @address INT = 53;
BEGIN
SELECT (t1-totalhopper_01)* 0.002204622621 AS HPR1,(t2-totalhopper_02)* 0.002204622621 AS HPR2,(t3-totalhopper_03)*0.002204622621 AS HPR3,(t4-totalhopper_04)*0.002204622621 AS HPR4,(t5-totalhopper_05)*0.002204622621 AS HPR5,(t6-totalhopper_06)* 0.002204622621 AS HPR6
FROM(
SELECT TOP 1 ROW_NUMBER() OVER(ORDER BY totalhopper_01 ASC) AS rownuma,TotalHopper_01,TotalHopper_02,TotalHopper_03,TotalHopper_04,TotalHopper_05,TotalHopper_06 FROM mm_Cycle_Data
WHERE TotalHopper_01 IS NOT NULL
AND TotalHopper_02 IS NOT NULL
AND TotalHopper_03 IS NOT NULL
AND TotalHopper_05 IS NOT NULL
AND TotalHopper_06 IS NOT NULL
AND t_stamp= (SELECT MIN(t_stamp) FROM mm_Cycle_Data WHERE get_address = @address AND T_stamp BETWEEN @start_time AND @end_time)
)a
LEFT JOIN(
SELECT TOP 1 ROW_NUMBER() OVER(ORDER BY totalhopper_01 ASC) AS rownum,TotalHopper_01 AS T1,TotalHopper_02 AS t2,TotalHopper_03 AS t3 ,TotalHopper_04 AS t4,TotalHopper_05 AS t5,TotalHopper_06 AS t6 FROM mm_Cycle_Data
WHERE TotalHopper_01 IS NOT NULL
AND TotalHopper_02 IS NOT NULL
AND TotalHopper_03 IS NOT NULL
AND TotalHopper_05 IS NOT NULL
AND TotalHopper_06 IS NOT NULL
AND t_stamp= (SELECT MAX(t_stamp) FROM mm_Cycle_Data WHERE get_address = @address AND T_stamp BETWEEN @start_time AND @end_time)
)ac
ON rownuma=rownum;
クエリ結果
HPR1 HPR2 HPR3 HPR4 HPR5 HPR6
--------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
5800.602419716689 0.000000000000 133.772091397038 0.000000000000 0.000000000000 0.000000000000
あなたはどんな問題を抱えていますか? –
私は関数をどのように作成するのか、どのような関数があるのか分かりません。ここで方向性を探している。 – Jad
テーブル値関数が適切であるように見える – Jonny