次の投稿について質問があります。追加しますが、初心者なので追加できません。
特定のタイプのテーブルとより良い情報を追加するために編集されました
以下に 2 つのテーブルがあり、studentname の tblnames を tblCombineNames に取得して Student name に変換したいと考えています。
アドバイスしてください、ありがとう!
TblNames
ID(PK) StudentType(FK) StudentNo(FK) GradeNo(FK) StudentName
---------- ---------- ---------- ---------- -------------
1 1 1 1 Mary
2 1 1 1 John
3 1 1 1 Sam
4 2 2 2 Alaina
5 2 2 2 Edward
6 2 2 2 Joe
出力を以下にしたいと思います
TblCombineNames
ID(PK) StudentType(PK) StudentNo(PK) GradeNo(PK) StudentNames
---------- ---------- ---------- ---------- -------------
1 1 1 1 Mary, John, Sam
2 2 2 2 Alaina, Edward, Joe
次のような名前のスカラー値関数があります
---dbo.fn_Concatenate_Names
ALTER FUNCTION [dbo].[fn_Concatenate_Names]
(
@StudentType VARCHAR(250),
@StudentNo VARCHAR(250),
@GradeNo VARCHAR(250)
)
RETURNS Varchar(250)
BEGIN
Declare @rtn Varchar(250)
BEGIN
Select @rtn=(
Select StudentNames + ', ' as 'data()'
from tblStudentnames
where studentType = @StudentType and StudentNo = @StudentNo and GradeNo = @GradeNo
for XML path('')
)
Set @rtn = LEFT(@rtn, Len(@rtn) - 1)
END
RETURN (@rtn)
END
関数を呼び出すように更新時に行います
update tblCombineNames
set studentnames = fn_concatenate_names(StudentType,StudentNo,GradeNo)
動作するように見えますが、250730 レコードの tblStudentNames で実行するには 2 時間かかります。そんなに時間はかからないと思います。