したがって、別のテーブルに結合できる中央値のテーブルを返すストアド SQL サーバー関数を作成しようとしています。
CREATE FUNCTION [dbo].getmedian (@varPartionBy1 int,@varPartionBy2 int, @varForTieBreak int, @varForMeasure int)
RETURNS TABLE
AS
RETURN
(
SELECT
@varPartionBy1,
@varPartionBy2,
AVG(@varForMeasure)
FROM
(
SELECT
@varPartionBy1,
@varPartionBy2,
ROW_NUMBER() OVER (
PARTITION BY @varPartionBy1, @varPartionBy2
ORDER BY @varForMeasure ASC, @varForTieBreak ASC) AS RowAsc,
ROW_NUMBER() OVER (
PARTITION BY @varPartionBy1, @varPartionBy2
ORDER BY @varForMeasure ASC, @varForTieBreak DESC) AS RowDesc
from
[fakename].[dbo].[temptable] bp
) bp
WHERE
RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
GROUP BY @varPartionBy1, @varPartionBy2
)
行く
「メッセージ 8155、レベル 16、状態 2、プロシージャ getmedian、行 25 'bp' の列 1 に列名が指定されていません」というエラーが返されます。-- UDF のコンテキストで列にテーブル エイリアスを割り当てる方法がわからないことを示していると思います。
エラーを修正するにはどうすればよいですか?
これは私の最初の USF ですので、主要な質問に対処する際に、他に役立つ設計の洞察をいただければ幸いです。助けてくれてありがとう!