【问题标题】:Check value from table and reward points accordingly检查表中的值并相应地奖励积分
【发布时间】:2017-03-15 12:40:20
【问题描述】:
ReportingDirector          ManagerID       EmployeeName    EmployeeID       WeekNumber     Pointsrewarded


john(director)              1                a            11               week1           100
john(director)              1                b            22               week1           200
john(director)              1                c            33               week1           300
bob(director)               2                d            44               week1            -10
bob(director)               2                e            55               week1           30
bob(director)               2                f            66               week1           40
bob(director)               2                g            77               week1           50
bob(director)               2                h            88               week1           90
cavin(director)             3                i            99               week1           300
cavin(director)             3                j            100              week1           400
cavin(director)             3                k            111              week1           800
cavin(director)             3                l            222              week1           305
cavin(director)             3                m            333              week1           23
cavin(director)             3                n            444              week1           44
alpha (senior Director)     111              john         1111             week1           455
alpha(senior Director)      111              bob          2222             week1           -10
alpha(senior Director)      111              cavin        3333             week1            77




x                            x               mr.aplha       1               week1           99

我在上面有一张桌子。这里我们有三个位置employeesdirectorsenior director。员工隶属于董事,董事隶属于高级董事。

问题: 如果董事下的任何人的积分(请参见pointsReawrded 列)为-10,则董事得到-100 分,即在pointsRewarded 中加-100 分该各自董事的栏目。如果没有员工,他/她的下属有-10,那么主管将获得200分的奖励。

例如,表中的员工“d”在 bob 下,他是董事。所以 -100 奖励给 bob。同样,在 john 下没有人有 -10 ,所以 john 获得了 200 分的奖励。

我们不会奖励任何积分给“alpha”,即使他下面的任何员工的积分为 -10,因为他处于链条的顶端。

任何人都可以帮我做一个通用查询,以检查董事下的任何员工是否得分为-10,并处罚该董事的得分为-100分。如果不是200分的奖励。

【问题讨论】:

  • 你能发布你的代码吗?
  • 请给我们看看您已经尝试过的代码

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012


【解决方案1】:

试试这样的

    ;with cte as
(
  select ReportingDirector, ManagerID, EmployeeName, EmployeeID, WeekNumber, Pointsrewarded
  ,COUNT(IIF(Pointsrewarded < 0,0,null))
over (partition by ReportingDirector order by ReportingDirector) as grp
  from #tmp1
  where ReportingDirector = ''
  UNION ALL
  select a.ReportingDirector, a.ManagerID, a.EmployeeName, a.EmployeeID, a.WeekNumber, a.Pointsrewarded
  ,COUNT(IIF(a.Pointsrewarded < 0,0,null))
over (partition by a.ReportingDirector order by a.ReportingDirector) as grp
  FROM #tmp1 a
  join cte on a.ManagerID = cte.EmployeeID 
)
select cte.*, IIF(grp = 1, -100,200) MgrPointsRewarded
from cte
where ReportingDirector <> ''

【讨论】:

  • 感谢您的意见-(导演)只是为了让你们知道。它不会在数据库中,当然。
猜你喜欢
  • 1970-01-01
  • 2012-07-29
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 2019-03-21
相关资源
最近更新 更多