একটি নাম এবং মান সহ একটি অপরিশোধিত সারির গণনা সহ দুটি সারণী দেওয়া হয়েছে , কীভাবে আমি CROSS JOINতাদের মানগুলির উপরে কোনও ক্রিয়াকলাপ প্রদর্শন করব ।
CREATE TEMP TABLE foo AS
SELECT x::text AS name, x::int
FROM generate_series(1,10) AS t(x);
CREATE TEMP TABLE bar AS
SELECT x::text AS name, x::int
FROM generate_series(1,5) AS t(x);
উদাহরণস্বরূপ, যদি সেই ফাংশনটি গুণক হয় তবে আমি কীভাবে নীচের মতো একটি (গুণ) টেবিল তৈরি করব,
এই সমস্ত (arg1,arg2,result)সারি দিয়ে তৈরি করা যায়
SELECT foo.name AS arg1, bar.name AS arg2, foo.x*bar.x AS result
FROM foo
CROSS JOIN bar;
সুতরাং এটি কেবল উপস্থাপনের প্রশ্ন, আমি এটি একটি কাস্টম নামের সাথেও কাজ করতে চাই - এমন একটি নাম যা কেবল CASTপাঠ্যে আর্গুমেন্ট নয় কেবল সারণীতে সেট করা হয়,
CREATE TEMP TABLE foo AS
SELECT chr(x+64) AS name, x::int
FROM generate_series(1,10) AS t(x);
CREATE TEMP TABLE bar AS
SELECT chr(x+72) AS name, x::int
FROM generate_series(1,5) AS t(x);
আমি মনে করি এটি একটি গতিশীল রিটার্ন-টাইপের সক্ষম ক্রসস্ট্যাব দিয়ে সহজেই সক্ষম হবে।
SELECT * FROM crosstab(
'
SELECT foo.x AS arg1, bar.x AS arg2, foo.x*bar.x
FROM foo
CROSS JOIN bar
', 'SELECT DISTINCT name FROM bar'
) AS **MAGIC**
কিন্তু, ছাড়া **MAGIC** , আমি পেতে
ERROR: a column definition list is required for functions returning "record" LINE 1: SELECT * FROM crosstab(
রেফারেন্সের জন্য, উপরোক্ত উদাহরণগুলি নামের সাথে ব্যবহার করা এর মতো আরও কিছু tablefunc 'র crosstab()চায়।
SELECT * FROM crosstab(
'
SELECT foo.x AS arg1, bar.x AS arg2, foo.x*bar.x
FROM foo
CROSS JOIN bar
'
) AS t(row int, i int, j int, k int, l int, m int);
তবে, এখন আমরা barআমাদের উদাহরণে টেবিলের সামগ্রী এবং আকার সম্পর্কে অনুমান করাতে ফিরে এসেছি । তাই যদি,
- সারণীগুলি নির্ধারিত দৈর্ঘ্যের হয়,
- তারপরে ক্রস-যোগটি অপরিজ্ঞাত মাত্রার ঘনককে উপস্থাপন করে (উপরের কারণে),
- ক্যাটাগরি-নামগুলি (ক্রস-ট্যাব পার্লেন্স) সারণীতে রয়েছে
এই জাতীয় উপস্থাপনা তৈরি করতে "কলাম সংজ্ঞা তালিকা" ছাড়াই পোস্টগ্র্রেএসকিউএল-এ আমরা কী করতে পারি?
