代码之家  ›  专栏  ›  技术社区  ›  Benk

sql存储过程循环

  •  0
  • Benk  · 技术社区  · 11 年前

    我的公司表包含id,name,我的联系人表包含公司id,firstname,contacttype(type=40(admin),type=41(user))

    我想创建一个临时表,该表的行为:company name,firstname(Admin),firstname(user) 有些记录可能具有firstname(admin),有些记录可能有firstname(user),而有些记录可能同时具有

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

    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.contattype=40)

    --循环我再次思考联系人表并存储在名字(user)中,其中(contact.contattype=41)

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

    提前感谢,

    2 回复  |  直到 11 年前
        1
  •  1
  •   NickyvV    11 年前

    我相信下面几行中的内容会有用。我不完全确定列名,但您可以相应地调整它们。

    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
    
        2
  •  -1
  •   José Alberto Núñez    11 年前

    我会这样做:

    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