У меня есть две таблицы с одинаковыми данными. Мне нужно сравнить один столбец. Это ddl для тестирования.
USE [DifferencesDB]
GO
/****** Object: Table [dbo].[FirstTable] Script Date: 11/06/2019 15:27:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[FirstTable](
[Id] [int] NULL,
[Column1] [nchar](10) NULL,
[Column2] [nchar](10) NULL,
[Column4] [decimal](18, 0) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[FirstTable] ([Id], [Column1], [Column2], [Column4]) VALUES (1, N'test ', N'test ', 30)
GO
INSERT [dbo].[FirstTable] ([Id], [Column1], [Column2], [Column4]) VALUES (2, N'test2 ', N'test3 ', 18)
GO
CREATE TABLE [dbo].[SecondTable](
[Id] [int] NULL,
[Column1] [nchar](10) NULL,
[Column2] [nchar](10) NULL,
[Column4] [decimal](18, 5) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[SecondTable] ([Id], [Column1], [Column2], [Column4]) VALUES (1, N'test ', N'test ', 13.56895)
GO
INSERT [dbo].[SecondTable] ([Id], [Column1], [Column2], [Column4]) VALUES (2, N'test2 ', N'test3 ', 18.456 )
GO
. Как вы видите, я хочу сравнить это с двумя таблицами.и данные в столбце 4, которые являются десятичными.
/****** Script for SelectTopNRows command from SSMS ******/
SELECT ABS(T0.Column4 -T1.Column4) as 'Difference'
FROM [FirstTable] T0, [SecondTable] T1
where T0.Id =T1.ID
Это работает, но возвращает мне тоны дополнительных строк, в результате получается нужная мне разница, поэтому как исключить строки из другой таблицы.
Так, например, следует сказать, что разница заключается в том, что я хотел бы, чтобы данные возвращались из второй таблицы, а также в столбец различий.
.456
Редактировать , чтобы показать, что происходит с живыми данными.
Пожалуйста, посмотрите мой новый запрос здесь
SELECT GoodData_Lines.Qty,
Invalid_Lines.Qty,
abs(GoodData_Lines.Qty- Invalid_Lines.Qty) AS 'Difference'
FROM GoodData_Lines
left OUTER JOIN Invalid_MCSSOPLines
ON GoodData_Lines.LineID = Invalid_Lines.LineID