आप जो चाहते हैं उसे पाने के लिए यह क्वेरी डीएमएल स्टेटमेंट बनाएगी।
SELECT 'SELECT ' || string_agg('count(' || quote_ident(attname) || ')', ', ')
|| 'FROM ' || attrelid::regclass
FROM pg_attribute
WHERE attrelid = 'mytbl'::regclass
AND attnum >= 1 -- exclude tableoid & friends (neg. attnum)
AND attisdropped is FALSE -- exclude deleted columns
GROUP BY attrelid;
रिटर्न:
SELECT count(col1), count(col2), count(col3), ...
FROM mytbl
आप इसे स्वचालित रूप से भी निष्पादित कर सकते हैं। लेकिन योजना SQL में नहीं, आपको EXECUTE
. की आवश्यकता है plpgsql फ़ंक्शन में या DO
. में उसके लिए स्टेटमेंट (PostgreSQL 9.0 या बाद का)।
string_agg()
. के लिए आपको पोस्टग्रेज 9.0 या बाद के संस्करण की भी आवश्यकता है समारोह। पुराने संस्करणों में, आप स्थानापन्न कर सकते हैं:array_to_string(array_agg(...), ', ')
।
आप विशेष कलाकारों के बारे में सोच सकते हैं 'mytbl'::regclass
. मैनुअल में ऑब्जेक्ट पहचानकर्ता प्रकारों के बारे में और पढ़ें।
बीटीडब्ल्यू:NULL
मान COUNT(col)
में नहीं जुड़ते हैं डिफ़ॉल्ट रूप से।
mytbl
. के लिए (स्कीमा-योग्य) तालिका नाम बदलें . आपके मामले में यह होना चाहिए:
...
WHERE attrelid = 'geoproject.mes_wastab'::regclass
...
यदि आप मिश्रित केस का उपयोग कर रहे हैं या अन्यथा गड़बड़ पहचानकर्ता (उद्धरण नोट करें):
...
WHERE attrelid = '"gEopRoject"."MES_wastab"'::regclass
...