関数に渡された日付と組織IDに基づいて、組織に渡された財務年度の数を計算するスカラー関数を作成しようとしています。私はそのIDに基づいて組織を調べ、会計年度が始まると、計算して戻ってくる必要があります。スカラー関数のT-SQL未解決の参照
tblOrganizationsテーブルへの参照は両方ともSQL71005を示しており、SSMSとVSの両方がテーブルの自動補完を表示していても解決されません。
私はSQLの教祖から遠いです。彼らが解決していない理由は何ですか?
CREATE FUNCTION [dbo].[fnGetFinanicalYear] ( @dateOfInterest datetime, @organizationId bigint ) RETURNS INT AS BEGIN DECLARE @fyBegins datetime, @ret as bigint SELECT TOP 1 @fyBegins = [dbo].[tblOrganizations].[financialYearBegins] WHERE [dbo].[tblOrganizations].[id] = @organizationId; SELECT @ret = (CONVERT(int,CONVERT(char(8),@dateOfInterest,112))-CONVERT(char(8),@fyBegins,112))/10000; RETURN @ret; END
本当に 'top 1'が必要なようには思えません。あなたが本当に必要としていることを考えれば、「注文する」ことなくそれを使うのは良い考えではありません。 – shawnt00
この場合も起こらないかもしれません。あなたは本当に '20170228 - 20160229'を0年にしたいですか?私が評論家になっている間、 '@ ret'が普通の' int'に収まらない数字を返すことは不可能です。 – shawnt00