比较记录并显示具有不同值的列名称
问题描述:
以下是我拥有的示例表。我有多个ERR#一个中是错误#2比较记录并显示具有不同值的列名称
Err# ItemNo Price Company Model
2 101 50 ABC A12
2 101 50 ABC A12
2 101 50 ABC A13
2 102 30 XYZ B1C
2 102 40 ZYZ B1C
2 103 80 MNO AL5
2 103 90 MNR AL9
尔#2 - 我得到一个错误消息“同一货号具有与其他列不同的值,”理想情况下不应该有相同的产品编号不同的值。
是什么意思是ItemNo 101价格是一样的,公司在所有3条记录中都是一样的,但型号不同,它有A12和A13都是错的。
每当我们有相同的产品编号有不同的价值就应该告诉我这是有differet值每项号列名
O/P应
- 对于所有的101条记录不同型号的价值
- 同货号为所有102条记录就应该打印为 - - 它应该是打印有不同的价格同货号,公司
- 对于所有的103条记录就应该打印为 - 有同货号不同的价格,比较任何型号
答
你可以做这样的事情:
select itemno,
substr((case when min(price) <> max(price) then ',price' end) ||
(case when min(company) <> max(company) then ',company' end) ||
(case when min(model) <> max(price) then ',model' end),
2) as columns_with_differences
from t
group by itemno;
感谢戈登,它的工作原理,但不过我想这能打印所有的记录(101 3条同样的结果),而不是只为一个第101项。另外,如果有超过50列,有什么替代方法可以轻松完成。请建议 – Puttu
@Puttu。 。 。这为所有项目做了工作。如果您有许多列,请在电子表格中构建查询并复制它。 –