【发布时间】:2017-02-15 04:30:51
【问题描述】:
我正在运行查询以从多个表中返回多行员工工时数据。 有一个有效条件是员工每天为多个客户提供 8 小时的白班以进行计费。 我想用一个唯一索引更新“索引”列,以便为 3 列中的任何重复项
eg.
Emp Hrs Date Index
Fred 8 11/7 1
Fred 8 11/7 2
Fred 8 11/7 3
Fred 10 12/7 1
Fred 9 13/7 1
在 Select 语句中,这是一个 Case 语句,它在 Index 列中为重复项返回一个值,但它没有给出唯一值
case when count(*) over (partition by Emp, Hrs, Date) > 1
then 1
else 0
end
我可以在 case 语句中包含按条件分组来实现此目的吗?
【问题讨论】:
-
为什么需要用一个在查询时总能确定的值来更新表?您喜欢每次触摸桌子时都必须执行此维护吗?我会将这个计算放在一个视图中,而不是作为表格中的永久列。
标签: sql sql-server