आप अपने डेटा को समूहीकृत करना चाहते हैं, इसलिए देखने की जगह [एग्रीगेट फंक्शन लिस्ट] (https://www.postgresql.org/docs/current/functions-aggregate.html
), इस मामले में यह string_agg ( value text, delimiter text ) → text
है
आप नाम और विभागों के डेटा को जोड़ना चाहते हैं और आप चाहते हैं कि नाम और विभाग अलग-अलग पंक्तियों में हों जैसा कि उदाहरण में दिखाया गया है। उसके लिए E'\n'
सीमांकक का उपयोग किया जाना चाहिए:
SELECT
id,
string_agg(name, E'\n') as names,
string_agg(dept, E'\n') as depts
FROM
data
GROUP BY
id
ORDER BY
id;
उत्तर आपको कैसे करें . दिखाता है और टिप्पणियां समझाती हैं क्यों नहीं . चुनाव अब आपका है।
1 संपादित करें
यदि आप रिकॉर्ड की संख्या को संरक्षित करना पसंद करते हैं और समूह की प्राथमिकी पंक्ति के साथ आईडी प्रदर्शित करना पसंद करते हैं, तो आपको विंडो फ़ंक्शन को देखना चाहिए। विशेष रूप से LAG ।
SELECT
CASE
WHEN id IS DISTINCT FROM LAG(id) OVER(order by id) THEN id
ELSE null
END as id,
name,
dept
FROM
data
order by
data.id;
एसक्यूएल वर्तमान आईडी की तुलना पिछली पंक्ति में से एक से करता है और इसे या शून्य मान आउटपुट करता है।