স্ট্রিং_এজি () থেকে কীভাবে ফলাফলটি বাছাই করা যায় ()


100

আমার একটি টেবিল রয়েছে:

CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)

সারি সহ:

INSERT INTO tblproducts(productid, product) VALUES (1, 'CANDID POWDER 50 GM');
INSERT INTO tblproducts(productid, product) VALUES (2, 'SINAREST P SYP 100 ML');
INSERT INTO tblproducts(productid, product) VALUES (3, 'ESOZ D 20 MG CAP');
INSERT INTO tblproducts(productid, product) VALUES (4, 'HHDERM CREAM 10 GM');
INSERT INTO tblproducts(productid, product) VALUES (5, 'CREAM 15 GM');
INSERT INTO tblproducts(productid, product) VALUES (6, 'KZ LOTION 50 ML');
INSERT INTO tblproducts(productid, product) VALUES (7, 'BUDECORT 200 Rotocap');

যদি আমি চালানো string_agg()উপর tblproducts:

SELECT string_agg(product, ' | ') FROM "tblproducts"

এটি নিম্নলিখিত ফলাফলটি ফিরিয়ে দেবে:

CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap

আমি কীভাবে একত্রিত স্ট্রিংটি বাছাই করতে পারি যাতে আমি ব্যবহার করব ORDER BY product?

আমি PostgreSQL 9.2.4 ব্যবহার করছি।

উত্তর:


227

পোস্টগ্রাগেস 9.0+ সহ আপনি লিখতে পারেন:

select string_agg(product,' | ' order by product) from "tblproducts"

বিশদ এখানে


উইন্ডো ফাংশন ব্যবহার করার সময়ও কার্যকর হবে এমন কোনও সমাধান আপনি কি দয়া করে বলতে পারেন?
সৌরভ গুজারানী

লিঙ্কের জন্য ধন্যবাদ। খোঁজ string_aggডকুমেন্টেশনে আপনাকে সেখানে নিয়ে নেই।
মাঙ্গো

32

https://docs.microsoft.com/en-us/sql/t-sql/funitions/string-agg-transact-sql?view=sql-server-2017

SELECT
  STRING_AGG(prod, '|') WITHIN GROUP (ORDER BY product)
FROM ... 

4
প্রশ্ন পোস্টগ্রিজ এসকিউএল সম্পর্কে ছিল। এই WITHIN GROUPধারাটি string_aggমাইক্রোসফ্ট এসকিউএল-এর মতো ফাংশনে প্রয়োগ হয় না ।
মানংগো

7
প্রশ্নটি স্ট্রিং_এজি নিয়ে ছিল। পোস্টগ্রিস তাঁর প্রশ্নের প্রসঙ্গে ঘটনাচক্রে ছিলেন এবং তিনি সর্বশেষে এটি উল্লেখ করেছিলেন। প্রশ্নটি অন্যদের জন্যও কার্যকর।
নাম

4
যদি এই সিনট্যাক্সটি আপনাকে সিনট্যাক্স ত্রুটি দেয় তবে আপনার সামঞ্জস্যের স্তরটি পরীক্ষা করুন: স্ট্যাকওভারফ্লো
মিঃ টিএ

4
select string_agg(prod,' | ') FROM 
  (SELECT product as prod FROM tblproducts ORDER BY product )MAIN;

এসকিউএল ফিডল


4
ওপি-র মতোই আমারও একই সমস্যা ছিল এবং এই পদ্ধতির বিষয়টি আমার প্রথম চিন্তা ছিল, তবে দুর্ভাগ্যক্রমে এটি কার্যকর হয় না (যা আমাকে এখানে এনেছে), যেখানে ইগোরের মতো হয়।
chbrown

আমার পক্ষে, উভয় পন্থা (ইলেসের এবং ইগরস) কাজ করেছিল।
স্টিফান

4
ভুল উত্তর. এটি কাজ করতে পারে তবে কাজের নিশ্চয়তা নেই।
zyamys

রিলেশনাল ডেটাবেসগুলি গাণিতিক সেটগুলির উপর ভিত্তি করে তৈরি হয় এবং এটি এই ক্ষেত্রে প্রতিফলিত হয় যে এসকিউএল-এর একটি প্রাথমিক নীতিটি সারি ক্রমটি তাত্পর্যপূর্ণ নয়। এমনকি যদি আপনি ORDER BYসাব ক্যোয়ারিতে কোনও ধারা অন্তর্ভুক্ত করেন তবে ক্লজটি FROMঅগত্যা তথ্যটি ক্রমযুক্ত করে না। এটি যদি কাজ করে তবে এটি শুদ্ধ ভাগ্য।
মানংগো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.