मेरे पास यह तालिका ओरेकल डीबी में है

+----+---+---+---+---+-------------+
| ID | A | B | C | D | CheckColumn |
+----+---+---+---+---+-------------+
|  1 | X |   |   |   | A           |
|  2 |   | X |   |   | A           |
|  3 |   |   | X |   | A           |
|  4 |   |   | X |   | C           |
|  5 |   | X |   |   | B           |
|  6 |   |   |   | X | B           |
+----+---+---+---+---+-------------+

जहां CheckColumn कॉलम उस फाइल को निर्दिष्ट करता है जिसका उपयोग मुझे WHERE बनाने के लिए करना है। दूसरे शब्दों में, मैं इस तरह की एक क्वेरी बनाना चाहूंगा

SELECT *
FROM Table
WHERE *Column of CheckColumn for that row*='X'

और परिणाम सेट निम्नलिखित होना चाहिए

+----+---+---+---+---+-------------+
| ID | A | B | C | D | CheckColumn |
+----+---+---+---+---+-------------+
|  1 | X |   |   |   | A           |
|  4 |   |   | X |   | C           |
|  5 |   | X |   |   | B           |
+----+---+---+---+---+-------------+

मैं चयन में CheckColumn के मान का उपयोग कैसे कर सकता हूं?

1
Nicolaesse 30 जून 2021, 15:34

2 जवाब

सबसे बढ़िया उत्तर

आप DECODE का उपयोग CheckColumn को दाएं कॉलम में मैप करने के लिए कर सकते हैं

select * from tab
where 
decode(checkColumn,'A',A,'B',B,'C',C,'D',D) = 'X';
2
Marmite Bomber 30 जून 2021, 12:55

एक विधि बहुत सारे बूलियन तर्क है:

where (checkcolumn = 'A' and a = 'X') or
      (checkcolumn = 'B' and b = 'X') or
      (checkcolumn = 'C' and c = 'X') or
      (checkcolumn = 'D' and d = 'X') 
1
Gordon Linoff 30 जून 2021, 12:35