DAX实现:基于年份条件跨表取值生成计算列
解决方案
以下是不同工具下的实现方法:
一、Excel 环境
直接在Table B的计算列中使用公式提取年份并匹配:
- 用XLOOKUP(Excel 365及以上版本支持):
=XLOOKUP(YEAR([@日期(Date)]), TableA[年份(Year)], TableA[目标值(Objective)], "") - 用VLOOKUP(兼容所有Excel版本):
=VLOOKUP(YEAR([@日期(Date)]), TableA, 2, FALSE)
原理:YEAR([@日期(Date)])提取当前行日期的年份,再通过匹配函数找到Table A中对应年份的目标值。
二、Power BI(DAX语法)
在Table B中新建计算列,使用LOOKUPVALUE函数:我的计算列 = LOOKUPVALUE(TableA[目标值(Objective)], TableA[年份(Year)], YEAR(TableB[日期(Date)]))
原理:因为Table A中每个年份唯一,LOOKUPVALUE会直接返回与Table B日期年份匹配的目标值。
三、数据库SQL实现
方式1:新增计算列(以SQL Server为例)
ALTER TABLE TableB ADD 我的计算列 AS ( SELECT Objective FROM TableA WHERE TableA.Year = YEAR(TableB.Date) );
方式2:查询时生成对应列
SELECT Date AS 日期(Date), Value AS 数值(Value), (SELECT Objective FROM TableA WHERE TableA.Year = YEAR(TableB.Date)) AS 我的计算列 FROM TableB;
内容的提问来源于stack exchange,提问作者Shiverz
相关产品推荐
相关产品推荐

