select
count(col_1),
count(col_2),
count(col_3)
from
<table>
रिटर्न कैसे स्तंभ प्रति कई रिकॉर्ड एक गैर शून्य मान है (कम से कम Oracle में, कि है।)
उदाहरण के लिए
drop table tq84_count_nulls;
create table tq84_count_nulls (
col_1 varchar(50),
col_2 number,
col_3 date
);
insert into tq84_count_nulls values (null, null, null);
insert into tq84_count_nulls values ('xx', null, null);
insert into tq84_count_nulls values (null, 42, null);
insert into tq84_count_nulls values ('yy', 12, null);
select
count(col_1),
count(col_2),
count(col_3)
from
tq84_count_nulls;
रिटर्न
COUNT(COL_1) COUNT(COL_2) COUNT(COL_3)
------------ ------------ ------------
2 2 0
यह दर्शाता है कि col_3 में केवल nulls होते हैं।
इस विचार का उपयोग वांछित दृश्य बनाने के लिए किया जा सकता है।
drop table tq84_count_nulls;
create table tq84_count_nulls (
col_1 varchar(50),
col_2 number,
col_3 date,
group_id varchar(2)
);
insert into tq84_count_nulls values (null, null, null, 'a');
insert into tq84_count_nulls values ('xx', null, null, 'a');
insert into tq84_count_nulls values (null, 42, null, 'a');
insert into tq84_count_nulls values ('yy', 12, null, 'a');
insert into tq84_count_nulls values (null, null, null, 'b');
insert into tq84_count_nulls values (null, null, null, 'b');
insert into tq84_count_nulls values (null, 42, null, 'b');
insert into tq84_count_nulls values (null, 12, null, 'b');
create or replace view nulls_per_type as
with n as (
select
count(col_1) col_1_count,
count(col_2) col_2_count,
count(col_3) col_3_count,
group_id
from
tq84_count_nulls
group by
group_id
),
o as (
select case col_1_count when 0 then 'COL_1 is always 0 for ' || group_id else null end u from n union all
select case col_2_count when 0 then 'COL_2 is always 0 for ' || group_id else null end u from n union all
select case col_3_count when 0 then 'COL_3 is always 0 for ' || group_id else null end u from n
)
select * from o where u is not null;
कौन सा, जब चयनित रिटर्न:
तालिका अब भी * group_id * जरूरत
select * from nulls_per_type;
COL_1 is always 0 for b
COL_3 is always 0 for a
COL_3 is always 0 for b
ऐसा नहीं है से, आप एक प्रश्न चाहते हैं कि केवल वापसी 40 कॉलम जिनमें वास्तव में डेटा है? और संभवतः अगर किसी अन्य 10 में से कोई एक मूल्य प्राप्त करता है, तो आपकी क्वेरी 41 कॉलम लौटाएगी? – MartW
ऐसा लगता है कि आपके पास एक ही तालिका में रिकॉर्ड्स के विभिन्न "प्रकार" या "प्रकार" हैं, जहां आप प्रत्येक के लिए एक अलग दृश्य देखना चाहते हैं। क्या कोई कॉलम है जो रिकॉर्ड के "प्रकार" को पहचानता है? –
हां यह सही @CodeByMoonlight है। –