我有一个简单的问题。我有表A和B,它们都包含3个公共列(name, id, date
),并且除了这3个公共列外,两个表都具有完全不同的列集。
现在,为了可视化目的,我需要将表B中的数据与表A相关联。由于我对SQL不太满意,所以我想问一问是否有可能,因为我在表A中已经有了一个简单的列,所以我知道可以计算列。但是我想做这样的事情:
表A中的新列,其中包含表A的名称,日期和ID与表B的名称,日期和ID匹配(如果没有匹配项保留为空或null)的任何行,其中包含表B的“特殊”列值。
例
表A:
Name | Date | ID | OtherData1 | OtherData2
-----+---------------+-----+----------------+-------------
John | March 2020 | SPC | Randomstuff | randomstuff
Doe | March 2020 | SPC | Randomstuff | randomstuff
John | February 2020 | SPC | RandomStuff | RandomStuff
Doe | February 2020 | SPC | Randomstuff | randomstuff
表B:
Name | Date | ID | MoreData1 | SomeData2 | Special
-----+---------------+-----+---------------+---------------+--------
John | March 2020 | SPC | Randomstuff | randomstuff | True
Doe | March 2020 | SPC | Randomstuff | randomstuff | False
John | February 2020 | SPC | RandomStuff | RandomStuff | True
Doe | February 2020 | SPC | Randomstuff | randomstuff | True
表A中的结果:
Name | Date | ID | OtherData1 |OtherData2 | SpecialImported
-----+---------------+-----+---------------+-------------+----------------
John | March 2020 | SPC | Randomstuff | randomstuff | True
Doe | March 2020 | SPC | Randomstuff | randomstuff | False
John | February 2020 | SPC | RandomStuff | RandomStuff | True
Doe | February 2020 | SPC | Randomstuff | randomstuff | True
在SQL Server中可以这样做吗?
对的,这是可能的。但是,为了引用计算列中的另一个表,您必须通过创建用户定义的函数来实现。这将具有name,date,id作为输入参数,如果表B中存在这样的组合,则将输出一点。
CREATE FUNCTION [dbo].[f_check_tableB_tuple](@name nvarchar(max),@date datetime,@ID nvarchar(max))
RETURNS bit
as
begin
declare @result bit
select @result=Special from tableB where name=@name and date=@date and ID=@ID
RETURN @result
end
然后,您可以在计算列中使用此函数:
alter table tableA add SpecialImported as (dbo.f_check_tableB_tuple(name,date,ID))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句