我正在使用 Postgres 資料庫。
我一直在嘗試解決這個問題幾個小時并閱讀了數十個主題但沒有結果
由于我不知道如何用語言來解釋我的問題,以下是我需要的示例:
我的查詢是
select distinct chiffre_affaires.contrat_pentete_id,
chiffre_affaires.chiffre_affaires_id,
chiffre_affaires.chiffre_affaires_montant_total
from chiffre_affaires;
電流輸出:
| contrat_pentete_id | chiffre_affaires_id | chiffre_affaires_montant_total |
|---|---|---|
| 1 | 1 | 111.7848 |
| 1 | 2 | 111.7848 |
| 1 | 3 | 111.7848 |
| 1 | 4 | 111.7848 |
| 1 | 5 | 111.7848 |
| 1 | 6 | 111.7848 |
| 2 | 7 | 90 |
| 2 | 8 | 90 |
| 2 | 9 | 90 |
| 2 | 10 | 90 |
預期輸出:
null 值可以替換為 0,null 或 0 都可以
| contrat_pentete_id | chiffre_affaires_id | chiffre_affaires_montant_total |
|---|---|---|
| 1 | 1 | 111.7848 |
| 1 | 2 | 空值 |
| 1 | 3 | 空值 |
| 1 | 4 | 空值 |
| 1 | 5 | 空值 |
| 1 | 6 | 空值 |
| 2 | 7 | 90 |
| 2 | 8 | 空值 |
| 2 | 9 | 空值 |
| 2 | 10 | 空值 |
預先感謝您的任何幫助 !
uj5u.com熱心網友回復:
試圖了解您想要實作的目標:對于一組具有相同contrat_pentete_id的行,按chiffre_affaires_id ASC排序,您希望顯示第一行的 chiffre_affaires_montant_total值,以及下一行的 NULL 值。如果是這樣,你可以試試這個:
SELECT DISTINCT
ca.contrat_pentete_id,
ca.chiffre_affaires_id,
CASE
WHEN ca.chiffre_affaires_id = first_value (ca.chiffre_affaires_id) OVER (ORDER BY ca.chiffre_affaires_id)
THEN ca.chiffre_affaires_montant_total
ELSE NULL
END AS ca.chiffre_affaires_montant_total
FROM chiffre_affaires AS ca
ORDER BY ca.contrat_pentete_id, ca.chiffre_affaires_id
uj5u.com熱心網友回復:
感謝 Edouard H。我終于寫了一個腳本來完成這項作業。
這是解決方案:
SELECT DISTINCT ca.contrat_pentete_id,
ca.chiffre_affaires_id,
ca.chiffre_affaires_annee_mois,
CASE
WHEN ca.chiffre_affaires_id =
first_value(ca.chiffre_affaires_id) OVER (PARTITION BY ca.contrat_pentete_id ORDER BY ca.chiffre_affaires_annee_mois)
THEN ca.chiffre_affaires_montant_total
END AS montant_facture
FROM chiffre_affaires AS ca
ORDER BY ca.contrat_pentete_id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366526.html
標籤:sql PostgreSQL的
上一篇:SQL基于單列聚合資料
