问题描述
我在两个数据库(dbSource
和dbTarget
)中有相同的表,并且我试图编写一个查询以将每个表中的字段值与Source / Target diff进行比较。
这是表结构:
CREATE TABLE [dbo].[tblWidget](
[ID] [int] NOT NULL,[Description] [varchar](50) NOT NULL,[UpdatedBy] [varchar](50) NOT NULL,CONSTRAINT [PK_tblWidget] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON,OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
为简单起见,我将说每个数据库中的表都有一行:
[dbSource]
:
[dbTarget]
:
我希望结果看起来像这样:
与结果最接近的是一个PIVOT
查询,该查询仅返回一个字段(UpdatedBy
)。
有没有一种简单的方法可以在一个查询中包含所有字段,而不是通过多个UNION
语句来进行某种PIVOT
?
我意识到如果有多个行(例如:ID = 2的行),则预期的结果将是没有意义的,因此请假设我只会在数据库之间比较一行。
这是我到目前为止所拥有的:
SELECT 'UpdatedBy' Field,[0] AS [Source],[1] AS [Target]
FROM
(
SELECT [ID],[Description],[UpdatedBy],1 IsSource
FROM [dbSource].[dbo].[tblWidget]
UNION ALL
SELECT [ID],0 IsSource
FROM [dbTarget].[dbo].[tblWidget]
) a
PIVOT (
MAX(UpdatedBy)
FOR IsSource IN ([0],[1])
) AS pvt
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)