考虑一对多关系中的第一行 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]中的第一条记录。
我有两个 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]中的第一条记录。