Sql 合并Defaut和用户调整的数据
我有一张桌子:Sql 合并Defaut和用户调整的数据,sql,sql-server,tsql,greatest-n-per-group,Sql,Sql Server,Tsql,Greatest N Per Group,我有一张桌子: Type (PK) Year (PK) Value Default 2000 1 Default 2001 2 UserFooAdjusted 2001 3 UserBarAdjusted 2001 4 返回不同年份的最快SQL查询是什么?如果有两行的年份相同,则返回用户调整后的值?有多个用户。查询返回一个用户的数据。示例结果: Year
Type (PK) Year (PK) Value
Default 2000 1
Default 2001 2
UserFooAdjusted 2001 3
UserBarAdjusted 2001 4
返回不同年份的最快SQL查询是什么?如果有两行的年份相同,则返回用户调整后的值?有多个用户。查询返回一个用户的数据。示例结果:
Year Value
2000 1
2001 3
我一直在想
A联合体B
,但是我怎样才能始终不让B收到副本呢?也许更好的解决方案是将当前表分为两个表:一个表包含默认值,另一个表包含用户调整的变量?假设只有两种类型:默认值和用户调整值,您可以在sql server中使用公共表表达式和窗口函数
WITH recordList
AS
(
SELECT YEAR, VALUE,
ROW_NUMBER() OVER (PARTITION BY YEAR
ORDER BY TYPE DESC) rn
FROM tableName
)
SELECT YEAR, VALUE
FROM recordList
WHERE rn = 1
@hidarikani如果有许多类型,您可以筛选出UserAdjusted
作为年度列表中的第一个,单击此处