sql存储过程循环

时间:2014-02-24 20:20:58

标签: sql-server sql-server-2008 sql-server-2005 stored-procedures

我有公司表包含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)

请指出我正确的地方,或类似的例子,

提前感谢,

2 个答案:

答案 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