PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

उत्पन्न कॉलम के साथ PostgreSQL क्वेरी

select 
t1.name,
sum(case when t2.abbrev='foo' then t1.amount*t2.amount else 0 end) as foo,
sum(case when t2.abbrev='bar' then t1.amount*t2.amount else 0 end) as bar,
sum(case when t2.abbrev='baz' then t1.amount*t2.amount else 0 end) as baz
from usage t1 inner join points t2 on t1.points_id=t2.ident
group by t1.name;

SQL Fiddle उदाहरण:http://sqlfiddle.com/#!15/cc84a/6;

गतिशील मामलों के लिए निम्नलिखित PostgreSQL फ़ंक्शन का उपयोग करें:

create or replace function sp_test()
returns void as
$$

declare cases character varying;
declare sql_statement text;
begin

select string_agg(concat('sum(case when t2.abbrev=','''',abbrev,'''',' then t1.amount*t2.amount else 0 end) as ', abbrev),',') into cases from points;

drop table if exists temp_data;

sql_statement=concat('create temporary table temp_data as select 
t1.name,',cases ,' 
from usage t1 inner join points t2 on t1.points_id=t2.ident
group by t1.name ');

execute sql_statement;

end;
$$
language 'plpgsql';

कार्य गतिशील कॉलम डेटा संग्रहीत करने के लिए अस्थायी तालिका का उपयोग करता है।

डेटा प्राप्त करने के लिए निम्नलिखित तरीके से कॉल करें:

select * from sp_test(); select * from temp_data;




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सएमएल के बिना जेपीए/हाइबरनेट/पोस्टग्रेएसक्यूएल कॉन्फ़िगर करें

  2. PostgreSQL में कॉपी फ़ंक्शन

  3. Ubuntu पर TimescaleDB को अपडेट करने के बाद त्रुटि पोस्ट करता है:फ़ाइल नहीं मिली

  4. यह निर्धारित करने के लिए कि पोस्टग्रेज़ में एक सरणी में NULL निहित है या नहीं?

  5. ऑपरेशनल एरर:कर्सर _django_curs_<id> मौजूद नहीं है