/ / मैं परिणाम में कॉलम के रूप में एक कॉलम में एक ब्रेकडाउन पाने के लिए एक क्वेरी कैसे बना सकता हूं? - sql, postgresql

परिणामस्वरूप कॉलम के रूप में कॉलम में ब्रेकडाउन प्राप्त करने के लिए मैं क्वेरी कैसे बना सकता हूं? - एसक्यूएल, postgresql

मूल डेटा

________________
|col1 |col2|col3|
________________
|A    | X  | 1  |
________________
|A    | Y  |  5 |
________________
|B    | X  | 2  |
________________
|B    | Y  | 6  |
________________
|C    | Y  | 7  |
________________

वांछित आउटपुट

_______________
|col1| X  | Y |
_______________
|A   | 1  | 5 |
_______________
|B   | 2  | 6 |
_______________
|C   |NULL| 7 |
_______________

उत्तर:

उत्तर № 1 के लिए 1

आपके उदाहरण के लिए एक क्रॉसस्टैब () क्वेरी इस तरह दिखाई देगी:

SELECT col1
, col2 AS "X"
, col3 AS "Y"
FROM crosstab(
"SELECT col1 , col2, col3
FROM   table
ORDER  BY 1"
,$$VALUES ("X"::text), ("Y")$$
) AS ct (
col1 int
, col2 numeric    -- use actual data type!
, col3 numeric);

इस संबंधित उत्तर में स्पष्टीकरण और लिंक: PostgreSQL Crosstab क्वेरी


जवाब के लिए 0 № 2

एक विधि सशर्त एकत्रीकरण है:

select col1,
max(case when col2 = "X" then col3 end) as x,
max(case when col2 = "Y" then col3 end) as y
from t
group by col1;