sql - 如何区分具有不同列值的相同ID
问题描述
我想使用 Union 函数加入来自 SQL Server 和 Oracle 的数据,但我在处理数据时遇到了一些问题。输出以相同的 id 和不同的列值显示。
我已经尝试过 Distinct & Group by 但无法解决此问题。
SELECT DISTINCT binusianid as ID,Name
FROM (SELECT binusian_id AS BinusianID,
Upper(nama) AS NAME
FROM hris.hris_db.dbo. master_data_pribadi_pegawai
WHERE stsrc = 'A'
UNION
SELECT emplid,
first_name + ' ' + ( CASE
WHEN last_name = first_name THEN ''
ELSE last_name
END ) AS NAME
FROM Openquery (oracle22,
'select a.EMPLID,b.FIRST_NAME,b.LAST_NAME from ps_n_lc_job_info a
JOIN PS_NAMES b ON b.EMPLID = a.EMPLID
WHERE a.N_ACTION_CODE NOT IN(''KELUAR'',''MENINGGAL'',''BATAL'',''DROPOUT'')'
))a
Group by a.BinusianID,Name
输出样本如下
谢谢
解决方案
正如@TomC Union 所说,将为您提供不同的 ID 和姓名记录。但是这里的问题在于数据,从 Oracle 返回的名称不同但 ID 相同。因此,您将获得具有相同 ID 的两条记录。
如果你想消除其中任何一个,你可以使用 SQLRowNumber()
函数。我在 SQL 中创建了一个演示,只是为了解释如何在您的情况下使用它。为了更好地解释,我又添加了一条记录。
结果与重复行相同。在 SQL 和 Oracle 中相同的另一条记录由 Union 返回唯一。
如果您想消除任何一种用途,如下所示。
推荐阅读
- java - 为什么从 ViewModel 进行调用时,Retrofit enqueue 不起作用?
- android - 应用程序适用于 android 7 和 8,但不适用于 android 5 和 6
- react-native - 无法从“node_modules/react-native-router-flux/dist/Router.js”解析“mobx-react/native”
- python-3.x - 尽管子文件夹已添加到搜索路径,但未找到子文件夹中的模块
- android - 房间数据库,inMemoryDatabaseBuilder和databaseBuilder有什么区别?
- c++ - 同名函数的C++编译错误
- variables - Visual Studio Code Snippet Variable Transform not working
- python - h2o 中跨行的方差
- angular - Angular Material2 菜单内的滑动切换
- html - Chrome css 过渡:带有过滤器的文本消失