使用樞軸和逆透視如果數據庫版本是> =甲骨文11.2
WITH table1(username,data_usage,cost) AS (
SELECT 'user1', 50, 159 FROM dual UNION ALL
SELECT 'user2', 250, 376 FROM dual UNION ALL
SELECT 'user3', 150, 225 FROM dual),
table2(username,user1,user2,user3) AS (
SELECT 'data_usage', 50, 200, 150 FROM dual UNION ALL
SELECT 'cost', 159, 376, 225 FROM dual)
---
--End of data preparation
---
select tb.username || ' has different values column name data usage '|| tb.data_usage ||' at first table and '|| ta.data_usage ||' at table2' as text
from (select *
from table2
unpivot (val for users in (user1 as 'user1', user2 as 'user2', user3 as 'user3'))
pivot (min(val) for username in ('data_usage' as data_usage, 'cost' as cost))) ta
join table1 tb on (username = users)
WHERE ta.data_usage <> tb.data_usage;
輸出繼電器:
| TEXT |
|----------------------------------------------------------------------------------------|
| user2 has different values column name data usage 250 at first table and 200 at table2 |
只要使用這個查詢
select tb.username || ' has different values column name data usage '|| tb.data_usage ||' at first table and '|| ta.data_usage ||' at table2' as text
from (select *
from table2
unpivot (val for users in (user1 as 'user1', user2 as 'user2', user3 as 'user3'))
pivot (min(val) for username in ('data_usage' as data_usage, 'cost' as cost))) ta
join table1 tb on (username = users)
WHERE ta.data_usage <> tb.data_usage;
替換Table 1和Table與你的表名
來源
2014-03-03 17:52:14
San
如果我必須寫爲每個記錄多數民衆贊成在選擇statment也沒用怎麼我有大約100萬的記錄那只是一個例子,因爲我想要的東西 – sam
不考慮作爲查詢的一部分,將'數據準備結束'上面的部分完成,以避免在我的結尾創建物理表。僅使用後面的部分(即在「數據準備結束」之後)並將表1和表2替換爲表名。 – San
http://sqlfiddle.com/#!4/623b6 – sam