Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल:संचयी कॉलम और पंक्ति भर में योग

दो आइटम:1) स्तर =0 को छोड़कर गॉर्डन की प्रतिक्रिया वस्तुतः हाजिर थी। लेवल=1

. होना चाहिए

2) मुझे विश्वास नहीं है कि आपके वांछित परिणामों की अंतिम पंक्ति सही है, मुझे लगता है कि आप 10 से आगे हैं। यदि मैं सही नहीं हूं, तो मुझे बताएं और मैं इस पर फिर से जाऊंगा।

Declare @Table table (Profile varchar(25),Level int,CHgt int,BHgt int, SHgt int, Z int)
Insert into @Table values
('ABCD1' , 1  , 15 , 11 , 50 , 0),
('ABCD1' , 2  , 15 , 11 , 70 , 0),
('ABCD1' , 3  , 15 , 11 , 70 , 0),
('ABCD2' , 1  , 15 , 11 , 60 , 0),
('ABCD2' , 2  , 15 , 11 , 80 , 0),
('ABCD2' , 3  , 15 , 11 , 80 , 0),
('ABCD3' , 1  , 15 , 11 , 40 , 0),
('ABCD3' , 2  , 15 , 11 , 60 , 0),
('ABCD3' , 3  , 15 , 11 , 60 , 0)

select A.Profile
      ,A.Level
      ,A.CHgt
      ,A.BHgt
      ,A.SHgt
      ,B.Bhgt2
      ,Shgt2 = case when Level = 1 then 0 else SHgt2 end
      ,Z     = CHgt + B.Bhgt2 + case when level = 1 then 0 else SHgt2 end 
From @Table A 
Cross Apply (Select Bhgt2 = sum(Bhgt)
                   ,SHgt2 = sum(SHgt)
              From  @Table B
              Where B.Profile = A.Profile and A.Level >= B.Level 
            ) B;

रिटर्न

Profile Level   CHgt    BHgt    SHgt    Bhgt2   Shgt2   Z
ABCD1   1       15      11      50      11      0       26
ABCD1   2       15      11      70      22      120     157
ABCD1   3       15      11      70      33      190     238
ABCD2   1       15      11      60      11      0       26
ABCD2   2       15      11      80      22      140     177
ABCD2   3       15      11      80      33      220     268
ABCD3   1       15      11      40      11      0       26
ABCD3   2       15      11      60      22      100     137
ABCD3   3       15      11      60      33      160     208


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में COUNT () बनाम COUNT_BIG ():क्या अंतर है?

  2. आप किसी भी समय आधारित अंतराल के आधार पर समूह कैसे बनाते हैं?

  3. वर्कर थ्रेड्स के चल रहे समस्या का निवारण

  4. अद्वितीय वृद्धिशील मानों के साथ तालिका में इंट कॉलम अपडेट करें

  5. TIMEFROMPARTS () SQL सर्वर में उदाहरण (T-SQL)