考虑一对多关系中的第一行 SQL 服务器

Consider 1st row in one to many relation SQL Server

我有两个 tables 一个交易和一个主人。 master Table 具有多个主键值,导致一对多关系并复制度量。 是否可以在第一次出现时捕获测量值的实际值,并将同一测量值的另一次出现替换为 0? 这将帮助我保留维度值但不会重复聚合数据。

交易table

Key  Value
abc  240
def  120

硕士Table

Key  Dimension1 Dimension 2
abc  subcode1   description of abc
abc  subcode2   description of abc
def  subcode1   description of abc

需要输出

Key  Dimension1 Dimension 2        Value
abc  subcode1   description of abc  240
abc  subcode2   description of abc  0
def  subcode1   description of abc  120

您将从以下查询中获得所需的输出

SELECT  m.*
    ,(CASE WHEN ROW_NUMBER() OVER(PARTITION BY t.[Key] order by t.[Key]) = 1
        THEN t.Value ELSE 0 END) AS Value
FROM    Master_table as m
    inner join Transaction_table as t   on  t.[Key] =   m.[Key]

此处ROW_NUMBER()用于标识该[Key]中的第一条记录。