我有 2 张表,1 张有工作信息:
Table A:
另一个表具有来自表 A 的作业的源信息的重制信息:
Table B:
我试图获得的输出是所有工作的统一列表,以及来自两个表的相关信息(表 B 中每个翻拍的产品/发布周从表 A 中的原始工作中提取)。
Output Expected:
我尝试通过使用 case 语句进行左连接,如下所示:
SELECT CASE WHEN B.[Remake Job Number] is not null THEN B.[Remake Job Number] ELSE A.[Job Number] END as [Job Number], A.[Product], CASE WHEN B.[Remake Job Number] is not null THEN B.[Remake Quantity] ELSE A.[Quantity] END as [Quantity], A.[Release Week] from [Table A] as A LEFT JOIN (SELECT [Remake Job Number], [Remake Quantity], [Original Job Number] from [Table B]) as B on A.[Job Number] = B.[Original Job Number]
这最终给了我一份没有重拍的所有工作的列表和适当的信息,以及所有具有正确信息的重拍工作,但缺少带有适当信息的重拍的原始工作编号。我可以看到正在发生的事情,但我不确定如何将那些带有重制的原始工作编号添加回列表中(除了一些奇怪的 IN 语句)。我还尝试使用 COALESCE 获得与上述类似的结果。
使用 SQL Server,任何帮助表示赞赏。
您可以使用UNION ALL组合两个查询的结果。
UNION ALL
首先,从 with 获取所有内容Table A,然后将其与另一个查询结合,该查询将来自Table Awith 的信息Table B。
Table A
Table B
就是这样:
SELECT A.[Job Number], A.[Product], A.[Quantity], A.[Release Week] FROM [Table A] AS A UNION ALL SELECT B.[Remake Job Number], A.[Product], B.[Remake Quantity], A.[Release Week] FROM [Table B] AS B INNER JOIN [Table A] AS A ON A.[Job Number] = B.[Original Job Number]