NULLs को संरक्षित करने के लिए, क्रॉस जॉइन का उपयोग करें ... केस:
select a.ID, b.column_name
, column_value =
case b.column_name
when 'col1' then a.col1
when 'col2' then a.col2
when 'col3' then a.col3
when 'col4' then a.col4
end
from (
select ID, col1, col2, col3, col4
from table1
) a
cross join (
select 'col1' union all
select 'col2' union all
select 'col3' union all
select 'col4'
) b (column_name)
इसके बजाय:
select ID, column_name, column_value
From (
select ID, col1, col2, col3, col4
from table1
) a
unpivot (
column_value FOR column_name IN (
col1, col2, col3, col4)
) b
कॉलम मोड वाला टेक्स्ट एडिटर ऐसे प्रश्नों को लिखना आसान बनाता है। अल्ट्राएडिट में यह है, इसलिए Emacs करता है। Emacs में इसे आयताकार संपादन कहा जाता है।
आपको इसे 100 कॉलम के लिए स्क्रिप्ट करने की आवश्यकता हो सकती है।