मैं बाईं ओर करने के लिए डेटा (कॉलम) शिफ्ट करने के लिए करता है, तो पहले कॉलम (बाईं ओर कॉलम) 0 मूल्य है और शून्य दाईं ओर स्तंभों में जोड़ा जाना चाहिए आवश्यकता होती है। किसी भी कॉलम में गैर-शून्य मान मिलने के बाद बाद में कॉलम में 0 मान शेष रहना चाहिए।एमएस एसक्यूएल 2012: बाईं ओर से एसक्यूएल शिफ्ट कॉलम में यदि स्तंभ 0
इनपुट डेटा: -
cust_id month1 month2 month3 month4 month5
c1 100 200 300 400 500
c2 0 0 50 250 350
c3 0 0 100 0 0
c4 100 0 100 0 500
c5 0 0 0 0 0
अपेक्षित आउटपुट परिणाम: -
cust_id month1 month2 month3 month4 month5
c1 100 200 300 400 500
c2 50 250 350 NULL NULL
c3 100 0 0 NULL NULL
c4 100 0 100 0 500
c5 NULL NULL NULL NULL NULL
एक स्थिर काम के आसपास हो सकता है:
IF month1=0 and month2=0 and month3=0 and month4=0 and month5=0
THEN INSERT INTO TABLE output_table AS SELECT cust_id,'NULL','NULL','NULL','NULL','NULL' FROM input_table
IF month1=0 and month2=0 and month3=0 and month4=0 and month5 != 0
THEN INSERT INTO TABLE output_table AS SELECT cust_id,month5,'NULL','NULL','NULL','NULL' FROM input_table
IF month1=0 and month2=0 and month3=0 and month4 != 0 and month5 != 0
THEN INSERT INTO TABLE output_table AS SELECT cust_id,month4,month5,'NULL','NULL','NULL' FROM input_table
IF month1=0 and month2=0 and month3 !=0 and month4 != 0 and month5 != 0
THEN INSERT INTO TABLE output_table AS SELECT cust_id,month3,month4,month5,'NULL','NULL' FROM input_table
IF month1 != 0 and month2 != 0 and month3 !=0 and month4 != 0 and month5 != 0
THEN INSERT INTO TABLE output_table AS SELECT cust_id,month1,month2,month3,month4,month5,'NULL' FROM input_table
मैं स्टैक ओवरफ़्लो पर नेतृत्व छोड़ दिया करने के लिए करता है, तो सभी स्तंभों अशक्त हैं कॉलम शिफ्ट करने के लिए बताते हैं कि नीचे मिल सकता है। लेकिन यह सभी एनयूएलएल को प्रतिस्थापित करता है (भले ही न्यूल किसी गैर-शून्य/शून्य मूल्य के बाद आ रहा हो)।
move cells left in sql if left contains null and right contains value
मैं एक गतिशील समाधान जब महीने दर महीने के डेटा जोड़ा जाता है कि नए कॉलम संभाल कर सकते हैं का निर्माण करने की योजना बना रहा हूँ।
डाटाबेस है: एमएस एसक्यूएल सर्वर 2012
त्वरित डेटा तैयार करने SQLs: -
CREATE TABLE input_table(
cust_id char(5),
month1 int,
month2 int,
month3 int,
month4 int,
month5 int
);
INSERT INTO input_table VALUES
('c1',100,200,300,400,500),
('c2',0,0,50,250,350),
('c3',0,0,100,0,0),
('c4',100,0,100,0,500),
('c5',0,0,0,0,0);
आप इस कार्रवाई के लिए विशेष रूप से एक प्रारंभिक चरण के रूप में अपने डेटा denormalized है? यदि आपका डेटा cust_id, month_number, और मान के लिए कॉलम के रूप में है, तो उनके साथ काम करना आसान होगा। यदि आधार डेटा आपके द्वारा दिखाए गए denormalized रूप में हैं, तो आप केवल इस ऑपरेशन के लिए उन्हें सामान्य कर सकते हैं। –
इस प्रारूप में आपको प्राप्त करने के बाद डेटा के साथ आप क्या करने जा रहे हैं? और आप उन का उपयोग कर https://ozh.github.io/ascii-tables/ – scsimon
@scsimon मैं/p स्वरूपित और उम्मीद ओ पठनीय प्रारूप में/p टेबल तालिकाओं का प्रारूप कृपया कर सकते हैं। एमएल अल्गो के लिए यह आवश्यक है। – XEngineer