我有公司表包含id,name和我有联系表包含公司ID,名字,contacttype(type = 40(admin),type = 41(user))
我想创建一个临时表,其中包含以下行:公司名称,名字(管理员),名字(用户) 一些记录可以有firstname(admin),有些可以有firstname(用户),有些可以有两个
我在下面创建的代码不多,但我无法弄清楚如何做一个循环来存储firstname(admin)然后循环在同一个联系表中循环为firstame(用户)
DECLARE @tempreport TABLE
(
cName varchar(50),
cFirstAdmin varchar(50),
cFirstUser varchar(50)
)
insert into @tempreport (cName, cFirstAdmin, cFirstUser)
select
company.name
from
company
- 循环联系表并以名字(admin)存储其中(contact.contacttype = 40)
- 循环我想再次通过联系表和商店的名字(用户)在哪里(contact.contacttype = 41)
请指出我正确的地方,或类似的例子,
提前感谢,
答案 0 :(得分:1)
我相信下面的内容会有所作为。我不完全确定列名称,但您可以相应地调整它们。
SELECT
company.name
,[admin].firstname AS FirstAdmin
,[user].firstname AS FirstUser
FROM company
LEFT JOIN contact [admin] ON [admin].companyid=company.id AND [admin].type=40
LEFT JOIN contact [user] ON [user].companyid=company.id AND [user].type=41
答案 1 :(得分:-1)
我会这样做:
SELECT Admin.CompanyID, Admin.firstname, User.firstname
INTO #tempreport
FROM (Select contact.CompanyID, contact.firstname from contact.contacttype = 40) AS Admin
INNER JOIN (Select contact.CompanyID, contact.firstname from contact.contacttype = 41) AS User on User.CompanyID = Admin.CompanyID