【问题标题】:Election Query -yet another issue. Major选举查询 - 另一个问题。主要的
【发布时间】:2014-02-04 19:00:44
【问题描述】:

这个查询给我带来了我想要的结果。那太好了!

select  rc.[race number],
    max(case when seqnum = 1 then [candidate num] end) as Winner,
    max(case when seqnum = 1 then Votes end) as WinningVotes,
    max(case when seqnum = 1 then party end) as WinningParty,
    max(case when seqnum = 1 then leader end) as Winner1,
    max(case when seqnum = 1 then winner end) as WinnerSelected,
    max(case when seqnum = 1 then [leader percent] end) as WinnerPercent,
    max(case when seqnum = 2 then [candidate num] end) as Loser,
    max(case when seqnum = 2 then Votes end) as LosingVotes,
    max(case when seqnum = 2 then party end) as LosingParty,
    max(case when seqnum = 2 then leader2 end) as Loser2,
    max(case when seqnum = 2 then [leader2 percent] end) as LoserPercent,
    max(case when seqnum = 2 then winner end) as LoserSelected

from 
(
select  rc.[race number],
        rc.[candidate num],
        rc.[Votes],
        rc.[winner],
        c.[party],
        r.[leader],
        r.[leader percent],
        r.[leader2],
        r.[leader2 percent],
            row_number() over (partition by rc.[race number] order by votes desc) as seqnum
    from    dbo.[RACE CANDIDATES] rc
    inner join dbo.[CANDIDATE] c    on  rc.[candidate num]  = c.[candidate number]
    inner join dbo.[RACE] r
     on rc.[race number] = r.[race number]          
) rc
group by rc.[race number]

我现在遇到的问题是我需要在查询中包含的 RACE 表中有一个 title1 字段。我无法绑定该多部分标识符。这就是我在论坛上的全部寻找和破坏的开始。

每场比赛都有一个头衔和 2 名候选人。我试图将两个候选人和领先数据放入一个行集中。现在,我唯一缺少的是 title1 字段!啊啊啊!它永远不会结束。

我认为我不能在 max(case select 中使用它,因为它肯定会重复比赛编号。

我希望这是有道理的。很抱歉在论坛上浪费了这么多带宽。

【问题讨论】:

    标签: sql-server multiple-columns


    【解决方案1】:
    select  rc.[race number] AS RaceNumber,
        max(case when seqnum = 1 then title1 end) as title1,
        max(case when seqnum = 1 then [candidate num] end) as Winner,
        max(case when seqnum = 1 then Votes end) as WinningVotes,
        max(case when seqnum = 1 then party end) as WinningParty,
        max(case when seqnum = 1 then leader end) as Winner1,
        max(case when seqnum = 1 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 1 then [leader percent] end) as WinnerPercent,
        max(case when seqnum = 2 then [candidate num] end) as Loser,
        max(case when seqnum = 2 then Votes end) as LosingVotes,
        max(case when seqnum = 2 then party end) as LosingParty,
        max(case when seqnum = 2 then leader2 end) as Loser2,
        max(case when seqnum = 2 then [leader2 percent] end) as LoserPercent,
        max(case when seqnum = 2 then CAST(winner AS tinyint) end) as LoserSelected
    
    
    from 
    (
    select  
            r.title1,
            rc.[race number],
            rc.[candidate num],
            rc.[Votes],
            rc.[winner],
            c.[party],
            r.[leader],
            r.[leader percent],
            r.[leader2],
            r.[leader2 percent],
    
                row_number() over (partition by rc.[race number] order by votes desc) as seqnum
        from    dbo.[RACE CANDIDATES] rc
        inner join dbo.[CANDIDATE] c    on  rc.[candidate num]  = c.[candidate number]
        inner join dbo.[RACE] r
         on rc.[race number] = r.[race number] 
    
    ) rc
    group by rc.[race number]
    

    我明白了。谢谢大家!!!

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 2021-08-03
      • 1970-01-01
      • 2022-06-25
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      相关资源
      最近更新 更多