एसक्यूएल क्वेरी अगर क्षेत्र शून्य नहीं है, तो वृद्धिशील संख्या को संयोजित करने के लिए, अन्यथा ऑटो incrementment - sql, sql-server

मैं समस्या के साथ फंस गया हूं।

एक तालिका dbo.t1 है और यहां वह परिणाम है जिसे मैं प्राप्त करना चाहता हूं।

वास्तविक उत्पादन

sitename    country
abc.net       NULL
abc.net       NULL
abc.net      India
abc.net      India

अपेक्षित उत्पादन

sitename    country
abc.net       1
abc.net       2
abc.net      India1
abc.net      India2

तो मूल रूप से, दो कॉलम हैं, साइटेंम औरजिस देश का मान ऊपर दिखाया गया हो। नलियों को वृद्धिशील मूल्यों और मूल्यों से प्रतिस्थापित किया जाना चाहिए यानी "भारत" इस मामले में स्वयं + वृद्धिशील मूल्यों अर्थात् "India1", "India2" और इसी तरह प्रतिस्थापित किया जाना चाहिए।

Pl किसी भी स्पष्टीकरण के लिए पूछने के लिए स्वतंत्र महसूस हो रहा है।

उत्तर:

जवाब के लिए 2 № 1

आप उपयोग कर सकते हैं row_number():

with t as (
<your query here>
)
select t.sitename,
(coalesce(t.country, "") +
cast(row_number() over (partition by sitename, country order by sitename) as varchar(255)
) as country
from t;

जवाब के लिए 0 № 2

Another approach via using the Row_number तथा Union

select sitename ,
isnull(country,"") + convert(varchar(100)
,row_number() over (
partition by sitename order by sitename)
) as country
from #Temp
where country is  null

union

select sitename , isnull(country,"") + convert(varchar(100)
,row_number() over (
partition by sitename order by sitename)
) as country
from #Temp
where country is  not null

परिणाम:-

यहां छवि विवरण दर्ज करें


संबंधित सवाल
सबसे लोकप्रिय