Table Join Distinct Field



我遇到的问题是连接两个表。一个表包含所有通用数据,第二个表包含已给定特定值的旧字段。下面的示例表应该有助于澄清我的设置。

表1(通用数据)

ParaIndex   ParaName    ParaDefault
1           Cat         15
2           Fish        8
3           Dog         3

表2(具体数据)

Project    ParaIndex   ParaValue
John       1           6
John       2           7
Alan       3           9

然后的目标是连接这些表以获得一个表:

表3("John"的ParaIndex上的表Join)

ParaName   ParaIndex   ParaValue  ParaDefault
Cat        1           6          15
Fish       2           7          8
Dog        3                      3

因此,表3将返回表1中的所有行,但只显示ParaValue的非空值。E到目前为止,我已经尝试了改变联接类型、不同的选择、分组方式、选择子查询以及其他帖子中提到的建议的组合。

最终目标是在vb.net中使用这个查询作为表单的一部分

我得到的最接近的方法是返回表3中请求的数据,但它会排除未请求的行(例如,如果查询是针对"John"的,那么它会排除由"Alan"标记的参数,在这种情况下是3-Dog)。

SELECT t1.ParaName, t1.ParaIndex, t2.ParaValue, t1.ParaDefault
FROM Table1 AS t1LEFT OUTER JOIN Table2 AS t2
ON t1.ParaIndex = t2.ParaIndex
WHERE (((t2.ParaIndex) is null) OR t2.Project = 'John')

您必须使用LEFT OUTER JOIN:

SELECT t1.ParaName,
       t1.ParaIndex,
       COALESCE(CAST(t2.ParaValue AS VARCHAR(10), '') AS ParaValue,
       t1.ParaDefaule,
FROM dbo.Table1 t1
LEFT OUTER JOIN dbo.Table2 t2
   ON t1.ParaIndex = t2.ParaIndex
WHERE t2.Project = 'John'
ORDER BY t1.ParaIndex   

相关内容

  • 没有找到相关文章

最新更新