私は2つの臨時雇用者を持っています。このようなテーブル
@t1(p_ssn,p_fname,p_lname,Gender,.............)
->このテーブルには従業員レコードがあり、約30列あります
@t2(p_ssn,benefit,medical_premium,dental_premium,..............)
->このテーブルには従業員の福利厚生があり、約60列あります
のすべてのレコードに@t1
は、1つ以上の対応するレコードがあります。@t2
テーブル間を結合して、次のような表示を取得するにはどうすればよいですか(p_ssnに結合)各従業員レコードに続いて、すべての福利厚生レコードが必要です-それぞれが示されているように異なる行にあります
p_fname,p_lname,Gender etc... -> 1st employee
benefit1,medical_premium1,dental_premium_1 -> all the benefit records for this employee
p_fname,p_lname,Gender etc... -> 2nd employee
benefit1,medical_premium1,dental_premium_1
現在、ループを使用しています。ただし、各レコードのサイズが大きいため、途中でハングアップするだけです。
@Tim-これは私が立ち往生しているところです。@ t1には30列しかありませんが、@t2には60列あります
-実際のクエリ
select col1, col2 from
( -- Get employees
select 10 as ordinal, p_ssn, p_fname as col1, p_lname as col2,**there are only 30 columns here**
from @t1
union all
-- Get benefits
select 20 as ordinal, a.p_ssn, cast(b.benefit as varchar(50)), cast(b.premium as varchar(50)) ,**I want to display more columns here like b.col1,b.col2,b.col3 etc...60 columns**
from @t1 a
join @t2 b on a.p_ssn = b.p_ssn ) as a order by p_ssn, ordinal
私は次のことができることを知っています
select 10 as ordinal, p_ssn, p_fname as col1, p_lname as col2,'','',''
from @t1
union all
select 20 as ordinal, a.p_ssn, cast(b.benefit as varchar(50)), cast(b.premium as varchar(50)),b.col1,b.col2,n.col3
ただし、これはファイルフィードであり、空白は許可されていません。実際、長さとデータ型が定義されており、変更できないため、キャストを使用できません。