Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用distinct左连接并计算列值_C#_Sql_Group By_Db2_Left Join - Fatal编程技术网

C# 使用distinct左连接并计算列值

C# 使用distinct左连接并计算列值,c#,sql,group-by,db2,left-join,C#,Sql,Group By,Db2,Left Join,我有两个类似的表,我想加入它们并得到如下所示的结果 表1 JobNO | JobMovRefNo --------------------------------- 123 | 1 456 | 1 789 | 1 表2 JobNO | Arrived --------------------------------- 123 | y 123 | y 123

我有两个类似的表,我想加入它们并得到如下所示的结果

表1

JobNO       |       JobMovRefNo
---------------------------------
123         |   1
456         |   1
789         |   1
表2

JobNO       |   Arrived
---------------------------------
123         |   y
123         |   y
123         |   n
456         |   y
456         |   y
结果表

JobNO       |   Arrived
---------------------------------
123         |   n
456         |   y
789         |   n
我尝试了与group by的左连接,但得到了重复记录。非常感谢您的帮助


提前感谢。

使用
左联接
并在联接前聚合

select *
from table1 t1 left join
     (select jobno, min(arrived) as arrived
      from table2 t2
      group by jobno
     ) t2
     using (jobno);
您还没有解释您的逻辑,但是您似乎希望每行的
arrived
的最小值,这就是它的作用

编辑:

非常旧的DB2版本不支持使用
。这也可以写成:

select t1.*, coalesce(t2.arrived, 'n') as arrived
from table1 t1 left join
     (select jobno, min(arrived) as arrived
      from table2 t2
      group by jobno
     ) t2
     on t2.jobno = t1.jobno;

执行
左连接
分组方式
。使用
coalesce
为表2中不存在的作业编号获取“n”

select t1.jobno, coalesce(min(t2.arrived), 'n')
from table1 t1
left join table2 t2 on t1.jobno = t2.jobno
group by t1.jobno
这是我的解决方案。 我用了postgreSQL;希望它能与您的dbms一起工作

select 
    t1.jobno,
    min(CASE WHEN t2.arrived IS NULL THEN 'n' ELSE t2.arrived END) as arrived
from table1 t1 left join table2 t2 on t1.jobno = t2.jobno  
group by t1.jobno
order by t1.jobno 

group by jobno
@GORDON-谢谢你的回答。我很快尝试了这个方法,顺便说一句,我正在使用DB2,我得到了一个错误列或全局变量t2 notfound@Abe . . . 我修正了你问题上的标签。@GordonLinoff-再次感谢,我得到了数据,但789号工作单的数据为空。我希望它是一个“n”。有什么想法吗?@PaulVernon。我要说的是,我花了一些精力寻找合适的文档,但很难找到。我修正了答案。不太清楚背后的逻辑是什么。到达时应显示最后状态吗?