[解決済み] 変数に値を代入するSELECT文は、データ検索操作と組み合わせてはいけません。
2022-02-18 17:14:57
質問事項
この文のどこがおかしいのでしょうか?
ALTER Function [InvestmentReturn].[getSecurityMinLowForPeriod](@securityid int,
@start datetime,
@end datetime)
returns xml
begin
declare @results varchar(500)
declare @low int
declare @adjustedLow int
declare @day varchar(10)
if @end is null
begin
set @end = getdate()
end
set @adjustedLow = (select min(adjLow)
from (
select Low * [InvestmentReturn].[fn_getCorporateActionSplitFactor](isq.securityid, @start, convert(varchar,day, 111)) as adjLow
from
securityquote isq
where isq.securityid = @securityid and isq.day >= convert(varchar(10), @start, 111) and convert(varchar(10), @end, 111) >= isq.day
and low != -1
) as x)
select
top 1 @low = low
, @day = day
, @adjustedLow
--select high
from
securityquote sq
where
day >= convert(varchar(10), @start, 111) and convert(varchar(10), @end, 111) >= day
and securityid = @securityid and low != -1
order by low asc
set @results= '<results type="debug_min">'
set @results = @results + '<periodStart>' + coalesce(cast(@start as varchar(20)), 'NULL') + '</periodStart>'
set @results = @results + '<periodEnd>' + coalesce(cast(@end as varchar(20)), 'NULL') + '</periodEnd>'
set @results = @results + '<securityID>' + coalesce(cast(@securityID as varchar(10)), 'NULL') + '</securityID>'
set @results = @results + '<periodMin>' + coalesce(cast(@low as varchar(10)), '-11111') + '</periodMin>'
set @results = @results + '<coraxAdjustedPeriodMin>' + coalesce(cast(@adjustedLow as varchar(10)), '-11111') + '</coraxAdjustedPeriodMin>'
set @results = @results + '<dayMinOcurred>' + coalesce(@day, 'NULL') + '</dayMinOcurred>'
set @results = @results + '</results>'
return @results
ただ、(エラーの発生場所を把握した上で)答えを説明すると、2つ目のselect文から@adjustedLowを削除しただけです。
解決方法は?
SELECT文のカラム値を
@low
と
@day
ローカル変数。
@adjustedLow
の値がどの変数にも代入されないため、問題が発生します。
問題はここです。
select
top 1 @low = low
, @day = day
, @adjustedLow -- causes error!
--select high
from
securityquote sq
...
詳細な説明と回避策 SQL Server エラーメッセージ - Msg 141 - 変数に値を割り当てる SELECT 文は、データ検索操作と組み合わせてはいけません。
関連
-
[解決済み】各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み】SQL Server データベース復元エラー:指定されたキャストは有効ではありません。(SqlManagerUI)
-
[解決済み】フラットファイルの日付カラムで「キャスト指定に無効な文字値があります」を修正する方法とは?
-
[解決済み] 「ストアドプロシージャが見つかりませんでした
-
[解決済み] SSRS レポートの定義が無効です。
-
[解決済み] データベースのトランザクションログが満杯です。ログの領域が再利用できない理由を調べるには、sys.databases の log_reuse_wait_desc カラムを参照してください。
-
[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?
-
[解決済み] SQL Serverでforeachを記述する方法とは?
-
[解決済み] SQL Serverでdatetimeを切り捨てるにはどうすればよいですか?
-
[解決済み] SQL Server リンクサーバーのクエリ例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 式をデータ型datetimeに変換する際に算術オーバーフローエラーが発生する。(日付と時刻の表示中に...)
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] TABLOCKとTABLOCKXの比較
-
[解決済み] Sqlサーバーに制約が存在するかどうかを確認する方法は?
-
[解決済み] テーブルの上位1レコードを更新する sql server [重複].
-
[解決済み] 累積和の求め方
-
[解決済み] UPDATEエラーです。"REPLACEの引数1の引数データ型textは無効です"
-
[解決済み] SQLでNaN値をNULLに、またはNaNを0に変換する
-
[解決済み] 文字列から特定の文字を削除する
-
[解決済み] 日付から年内の週番号を取得する