TENANT、ROOMMATEおよびPERSONレコードを格納する3つのテーブルがあります。SQL Server 2008 - ピボットのない列に行アイテムを表示
スキーマは以下の通りです:
Table: Tenant
HMYPERSON SCODE sFirstName sLastName
1 t0011 fName lName
Table: room
HMYPERSON HMYTENANT sRelationShip
9458 1 Roommate
1024 1 Other
1025 1 Roommate
1026 1 Guarantor
Table: Person
HMY UCODE ULASTNAME sFIRSTNAME iPersonType
9458 r0011 roommate1 roommate1Fname 93
1024 r0012 roommate2 roommate2Fname 93
1025 r0013 roommate3 roommate3Fname 93
1026 r0014 roommate4 roommate4Fname 90
テナントテーブルには、テナントのレコードが含まれています。 ROOMテーブルには、乗員レコードが含まれています。 人のテーブルには、ROOMテーブル内のすべてのそれの人々の種類(テナント、ルームメイト、ベンダーなど)
HMYTENANTが含まれているROOMテーブル内のテナントテーブルの外部キー(HMYPERSON)
HMYPERSONは外部キーですPERSONテーブル(HMY)
PERSONテーブルのIPERSONTYPEは、どのタイプの人物レコードであるかを指定します。 (93名はルームメイト、90名は保証人)
すべてのテナントとそのルームメイト名を1行に表示したい。 すべてのルームメイトは、同じ行と別々の列に表示する必要があります。 (ルームメイトごとに1列)
私はルームメートのリストを私に提供するクエリを書いています。ここで
は、私が書いたものです:
Select t.scode, t.sLastname + ' ' + t.sFIRSTNAME TenantName, p.ULASTNAME + ' ' + p.sFIRSTNAME RoommateName
from tenant t
join room r on r.hmytenant = t.hmyperson
left join person p on p.hmy = r.hmyperson and (r.sRelationship <> 'Guarantor' or p.IPERSONTYPE<>90)
where t.hmyperson=1
これは私に以下のように出力できます:
scode Tenantname RoommateName
t0011 lName fName roommate1 roommate1Fname
t0011 lName fName roommate2 roommate2Fname
t0011 lName fName roommate3 roommate3Fname
をしかし、私はそれが好きたい:
scode Tenantname Roommate1 Roommate2 Roommate3
5人のルームメイトまでです十分。
あなたのお手伝いをお待ちしております。
を参照してください:http://modern-sql.com/use-case/pivot –