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

如何动态地旋转

  •  0
  • krisdyson  · 技术社区  · 17 年前

    我有两张桌子;潜在客户、地区和推荐人。

    ID, Name, TerritoryId

    推荐人有:

    ID, LeadId, Name

    ID and Name

    潜在客户始终与某个地区相关,潜在客户可以选择与推荐人相关。

    Territory | Lead Count | Ref1 Lead Count | Ref2 Lead Count | Ref3 Lead Count
    
    Leeds       10            1                7                 2
    
    Exeter     43             9                21                8
    
    etc...
    

    好的,问题是,我想按地区分组,并计算每个地区的潜在客户数。。。。这很好:-

    select t.Name, COUNT(1)
    from Territory t inner join Lead l on l.TerritoryID = t.Id
    group by t.Name

    但现在我想按推荐人分类。

    我知道我可以通过PIVOT部分实现这一点,但是,我知道我必须在代码中显式地声明引用者。是否有任何方法可以执行某种动态透视,根据referer中的行数附加其他列?

    1 回复  |  直到 17 年前
        1
  •  0
  •   Jonny Cundall    17 年前

    大概是这样的:

    select * from (select r.name, t.name as Territory  
    from referrers r join Lead l on l.Id = r.leadId
    join Territory  t on l. TerritoryID = t.Id) s 
    pivot(count(Name) for Name in ([geoff],[fred])) p
    

    推荐文章