Sql server sql存储过程循环

Sql server sql存储过程循环,sql-server,sql-server-2008,sql-server-2005,stored-procedures,Sql Server,Sql Server 2008,Sql Server 2005,Stored Procedures,我的公司表包含id、姓名,我的联系人表包含公司id、名字、联系人类型(类型=40(管理员),类型=41(用户)) 我想创建一个临时表,其中包含以下行:company name、firstname(Admin)、firstname(user) 有些记录可以有firstname(admin),有些记录可以有firstname(user),有些记录可以两者都有 我在下面创建的代码不多,但我不知道如何循环存储firstname(admin),然后在同一个联系人表中循环firstame(user) --在

我的公司表包含id、姓名,我的联系人表包含公司id、名字、联系人类型(类型=40(管理员),类型=41(用户))

我想创建一个临时表,其中包含以下行:company name、firstname(Admin)、firstname(user) 有些记录可以有firstname(admin),有些记录可以有firstname(user),有些记录可以两者都有

我在下面创建的代码不多,但我不知道如何循环存储firstname(admin),然后在同一个联系人表中循环firstame(user)

--在联系人表中循环并以名字(admin)存储,其中(contact.contacttype=40)

--在联系人表中循环我的想法,并将其存储在名(user)中,其中(contact.contacttype=41)

请给我指出正确的地方,或是一个类似的例子


提前感谢,

我相信下面几行就行了。我不完全确定列名,但您可以相应地调整它们

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
我会这样做:

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

子选项的SQL语法无效:
from contact.contacttype=40
将不起作用。我是从您自己的话中选择的。将其更改为联系人表中列的正确名称。我相信您没有理解我的观点:除了列名可能不同之外,您的语法也不正确。第三行和第四行是不正确的SQL.Ok。无论如何,我给了你一个例子,这样你就可以知道如何解决你的问题。我没有给你举一个例子让你完全照搬。好吧,现在完全困惑了。。我没有问这个问题,因为当你看用户名的时候你可以清楚地看到。谢谢你的工作,你能告诉我你将如何调整,以便它从联系人表中抓取前1条记录吗。e、 g.如果contactid有超过1个用户,现在它将同时显示这两个用户(多行),我将如何显示第一个用户?再次感谢!第一个是什么意思?例如,使用最低的contact.id?top 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