Sql server 是否插入/转换另一个表中的列?

Sql server 是否插入/转换另一个表中的列?,sql-server,join,Sql Server,Join,我有一个数据表,其中包含我试图显示的一组信息。总共有3057条记录,所以我希望我的最终查询能够返回3057条记录 本质上,我希望能够创建一个SELECT语句,该语句允许我在原始表中包含一列,转换该特定列(基本上,行有一个ID,但同一个表也可以将ID转换为公共名称) 根据特定的筛选/搜索,很容易进行基本联接并添加列: DefView = '(None)' AND DefType = 'DefPublicName' -- 250 records 这个结果给出了所有具有可翻译名称的记录。因此,现在我

我有一个数据表,其中包含我试图显示的一组信息。总共有3057条记录,所以我希望我的最终查询能够返回3057条记录

本质上,我希望能够创建一个
SELECT
语句,该语句允许我在原始表中包含一列,转换该特定列(基本上,行有一个ID,但同一个表也可以将ID转换为公共名称)

根据特定的筛选/搜索,很容易进行基本联接并添加列:

DefView = '(None)' AND DefType = 'DefPublicName' -- 250 records
这个结果给出了所有具有可翻译名称的记录。因此,现在我可以将该列添加到我的首字母
SELECT
,然后就可以上路了

问题是我的记录现在完全没有了。我相信它丢失了我加入
时找不到的项目。我得到了2342条记录,很可能是因为当我们创建
JOIN ON
子句时,有一些数据没有绑定

我认为,另一种说法是,我们只添加了当前存在的“有效”PublicTitle列。因此,如果我们有没有这些信息的行,它基本上被排除在外

而我想要的功能是包含它,如果我们没有PublicTitle,它可以是
NULL
/empty

因为我知道我们丢失了记录,所以我想一个
联盟将有助于找回丢失的记录。只是当所有的事情都说了又做了的时候,很难让精确的查询得到总共3057行

SELECT
    TD.RecID,
    TD2.DefName AS PublicTitle,
    TD.DefType,
    TD.DefID,
    TD.DefName,
    TD.DefView,
    TD.DefOwner
FROM DefinitionTable AS TD --3057
JOIN DefinitionTable TD2 ON TD.DefOwner = TD2.DefID -- 4213
WHERE TD2.DefView = '(None)' AND TD2.DefType = 'DefPublicName' --2342.
UNION (SELECT   TD3.RecID,
    '' AS PublicTitle,
    TD3.DefType,
    TD3.DefID,
    TD3.DefName,
    TD3.DefView,
    TD3.DefOwner FROM DefinitionTable TD3 WHERE TD3.DefView != '(None)' AND TD3.DefType != 'DefPublicName') --2713

我很确定我做到了:

Select
(SELECT TOP 1 DefName As PublicTitle From DefinitionTable  TD1 Where TD1.DefID = TD2.DefOwner AND TD1.DefView = '(None)') As PublicTitle
, * From DefinitionTable TD2