आप जो चाहते हैं उसे पाने के लिए यह क्वेरी डीएमएल स्टेटमेंट बनाएगी।
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
...