select '2020-07-02'::date - "duedate"::date as days_passed_since_invoice_was_sent,
       duedate,
       contract_id, 
       paiddate, 
       paymentdueon, 
       component,
       record_valid_from, 
       dueamount, 
       unpaidamount, 
       waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31'
  and unpaidamount > 0
order by duedate asc

मैं कैसे अनुबंध_आईडी द्वारा समूहित करूं? मैं postgresql 9.6 नए संपादन का उपयोग कर रहा हूं: तो मेरा उद्देश्य यहां अनुबंध_आईडी के देर से दिनों के कुल एनआर प्राप्त करना है। और फिर उस विशिष्ट डेटा बिंदु के लिए बाकी जानकारी दिखाने के लिए, इसलिए मैं अपनी तालिका के बाकी कॉलम भी चुन रहा हूं। उन स्तंभों के साथ मैं कुछ नहीं करना चाहता। वे जैसे हैं वैसे ही उन्हें छोड़ दें।

1
KarlPRO 2 जुलाई 2020, 12:21

2 जवाब

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

यदि आप एक पंक्ति प्रति contract_id चाहते हैं तो आप distinct on का उपयोग कर सकते हैं:

select distinct on (contract_id) ('2020-07-02'::date - "duedate"::date) as days_passed_since_invoice_was_sent,
       duedate, contract_id,  paiddate, paymentdueon, component,
       record_valid_from, dueamount,  unpaidamount, waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31' and unpaidamount > 0
order by contract_id, duedate asc;

यह प्रत्येक अनुबंध के लिए नवीनतम duedate के साथ पंक्ति लौटाता है (जो निश्चित रूप से where शर्तों को पूरा करता है)।

1
Gordon Linoff 2 जुलाई 2020, 14:12

आपके प्रश्न के बारे में जो मैंने समझा है, उससे आप केवल एक कॉलम के आधार पर समूह बनाना चाहते हैं। मुझे लगता है कि यह PostgreSQL में किया जा सकता है। अधिक विकल्पों के लिए आप https://www.postgresqltutorial.com/postgresql-group-by/#:~:text=परिचय %20to%20PostgreSQL%20GROUP%20BY%20clause&text=SELECT%20column_1%2C%20column_2%2C%20aggregate_function(,list%20of%20comma%2Dseparated%20columns.

select '2020-07-02'::date - "duedate"::date as days_passed_since_invoice_was_sent,
       duedate,
       contract_id, 
       paiddate, 
       paymentdueon, 
       component,
       record_valid_from, 
       dueamount, 
       unpaidamount, 
       waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31'
  and unpaidamount > 0
GROUP BY customer_id
order by duedate asc
0
Sayen 2 जुलाई 2020, 12:53