私はMSSQLを使用しています。テーブル内の特定の行を別のテーブルのデータで更新したい。更新する特定の行を取得するクエリを作成しました。更新が必要な特定の行を選択するためにselectクエリを使用したことに注意してください。また、正しい行を取得するために使用されるサブクエリがあることにも注意してください。私にとって、これはセットステートメントに組み込むことを困難にします。
select tbl1.assessmentcode, tbl1.Overview from subjectassessmentareas tbl1
inner join
(
select assessmentcode,MIN(areaseq) as minassessarea from subjectassessmentareas
where resultgroup = 'PR_Yr8_2' and ResultType = 'KUS_5'
group by AssessmentCode
) tbl2
on tbl1.AssessmentCode = tbl2.AssessmentCode and tbl1.AreaSeq = tbl2.minassessarea
where fileyear = 2016 and filesemester = 3
これは私に与えます
次に、概要列を別のテーブルのデータで更新します。このselectクエリは、他のテーブルを更新するために使用したい情報を提供します。
SELECT AssessmentCode, Overview
FROM SubjectAssessments
WHERE (ClassCampus = 'S')
and (FileYear = 2015)
and (FileSemester = 3)
and filetype = 'A'
and AssessmentCode like '08%'
これは私に与えます
上記の最初のクエリで取得した行の概要列を、両方のクエリのQuery1.AssessmentCode = Query2.AssessmentCodeである2番目のクエリに含まれる概要列で更新する構文を教えてもらえますか。
setステートメントを使用して、上記の最初のクエリを使用して、設定する行を指定するにはどうすればよいですか?他の同様の質問では、単純なセットを使用してから、whereステートメントのないフィールドを使用します。
更新可能なCTEでこれら2つを結合するだけです。
;with x as (
select tbl1.assessmentcode, tbl1.Overview
from subjectassessmentareas tbl1
inner join
(
select assessmentcode,MIN(areaseq) as minassessarea from subjectassessmentareas
where resultgroup = 'PR_Yr8_2' and ResultType = 'KUS_5'
group by AssessmentCode
) tbl2
on tbl1.AssessmentCode = tbl2.AssessmentCode and tbl1.AreaSeq = tbl2.minassessarea
where fileyear = 2016 and filesemester = 3
),
y as (
SELECT AssessmentCode, Overview
FROM SubjectAssessments
WHERE (ClassCampus = 'S')
and (FileYear = 2015)
and (FileSemester = 3)
and filetype = 'A'
and AssessmentCode like '08%'
),
z as (
select x.Overview as dest, y.Overview as src
from x join y on x.AssessmentCode = y.AssessmentCode
)
update z set dest = src
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加