2016-06-21 13 views
9

मैं कैसे या समारोह के साथ इसकैसे बूलियन स्तंभ कुल

COL_1 | COL_2 | COL_3 | COL_4 
val | T | F | F 
val | F | T | F 

जैसे कुछ tuples समेकित कर सकते हैं और निम्न तालिका वापस जाने के लिए?

COL_1 | COL_2 | COL_3 | COL_4 
val | T | T | F 

उत्तर

12

बस एक GROUP BY, MAX() प्रयोग करते हैं, टी वापस जाने के लिए, यदि उपलब्ध किसी और एफ

select col_1, max(col_2), max(col_3), max(col_4) 
from tablename 
group by col_1 
2

तो COL_2COL_4 कर रहे हैं पाठ स्तंभ (char, varchar, varchar2, nvarchar, nvarchar2) 'T' युक्त या 'F', तो आप उनमें से 'T' > 'F', यानी 'T' से पहले ही आ सकते हैं लेक्सिकल क्रम में आर 'F'

SELECT COL_1, MAX(COL_2) AS COL_2, MAX(COL_3) AS COL_3, MAX(COL_4) AS COL_4 
FROM table 
GROUP BY COL_1 

स्पष्टीकरण: स्थानीय ऑपरेशन या सत्य लौटाता है, यदि कम से कम एक ऑपरेंड सत्य है। MAX() "T" देता है यदि कम से कम एक मान "T" और अन्यथा "F" है।


नोट: बूलियन स्तंभ के रूप में

COL_x NUMBER(1) DEFAULT 0 NOT NULL 

या किसी अन्य सांख्यिक प्रकार घोषित कर दिया गया है तो मैं, MAX(ABS(col_x)) ले जाएगा के बाद से एक नकारात्मक मूल्य के साथ ही सही मायने रखता है। (आप कोई ComboBox एक बूलियन से जुड़ी साथ कोई पहुँच दृश्यपटल है, तो यह मान 0 या -1 अर्जित करता है।)

0

चयन col1 = मैक्स (CONVERT (tinyint, IsNull (col1,0))) ...

+1

आपको यह उत्तर कुछ व्याख्या कर सकते हैं? – Forklift

1

बस एक पक्ष नोट के रूप में (Oracle के साथ काम नहीं करता है): PostgreSQL में, यदि आप ऐसा करते हैं:

select col_1, bool_or(col_2), bool_or(col_3), bool_or(col_4) 
from tablename group by col_1 order by col_1 
संबंधित मुद्दे