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

एसक्यूएल में एक ही आईडी के साथ कॉलम का योग कैसे लें?

संशोधित प्रश्न — TradeID की भी आवश्यकता है।

SELECT f.TradeID, f.PricingSecurityID, s.TotalQuantity
  FROM FollowingTableStructure AS f
  JOIN (SELECT PricingSecurityID, SUM(Quantity) AS TotalQuantity
          FROM FollowingTableStructure
         GROUP BY PricingSecurityId
       ) AS s ON f.PricingSecurityID = s.PricingSecurityID

मैं पूरी तरह से आश्वस्त नहीं हूं कि प्रश्न समझदार है, लेकिन यह आपकी समस्या है। इसे अन्य तालिकाओं से निपटने के लिए आसानी से बढ़ाया जा सकता है; बस उचित जॉइन क्लॉज जोड़ें।

कृपया प्रश्न में तालिका का नाम शामिल करना याद रखें - यह आश्चर्यजनक है कि तालिका को नाम दिए बिना कितनी बार SQL प्रश्न पूछे जाते हैं (इसलिए यह केवल आप ही नहीं हैं जो किसी भी तरह से भूल जाते हैं)।

फिर से अपडेट किया गया प्रश्न

तो मूल रूप से अनाम तालिका, जाहिरा तौर पर, Fireball.dbo.Trade . है या Fireball..Trade . मैं शायद 11-तरफा यूनियन को एक दृश्य में रखूंगा क्योंकि इसके कई स्थानों पर उपयोग किए जाने की संभावना है। हालांकि, इसे अनदेखा करते हुए, हम अभी भी जानकारी को आपकी क्वेरी में डाल सकते हैं:

SELECT t.TradeId, 
       ISNULL(Securities.SecurityType,'Other') SecurityType, 
       Securities.TableName,
       CASE 
       WHEN SecurityTrade.SecurityId IS NOT NULL THEN SecurityTrade.SecurityId
       ELSE Trade.SecurityId
       END AS PricingSecurityID,
       s.TotalQuantity AS Quantity,
       t.Price,
       CASE
       WHEN (t.Buy = 1 AND t.Long = 1) THEN 1
       WHEN (t.Buy = 0 AND t.Long = 0) THEN 1
       ELSE 0
       END AS Position
  FROM Fireball_Reporting..Trade AS t
  JOIN (SELECT PricingSecurityID, SUM(Quantity) AS TotalQuantity
          FROM Fireball_Reporting..Trade
         GROUP BY PricingSecurityId
       ) AS s ON t.PricingSecurityID = s.PricingSecurityID
  LEFT JOIN
       (SELECT TradeId, 'Bond' SecurityType, 'Fireball.dbo.Bond' TableName FROM Fireball..CorpBondTrade
        UNION
        SELECT TradeId, 'IRS' SecurityType, 'Fireball.dbo.Bond' TableName FROM Fireball..IRPTrade
        UNION
        SELECT TradeId, 'Treasury' SecurityType, 'Fireball.dbo.Bond' TableName FROM Fireball..TreasuryTrade
        UNION
        SELECT TradeId, 'Index' SecurityType, 'Fireball.dbo.CDSIndex' TableName FROM Fireball..CreditIndexTrade
        UNION
        SELECT TradeId, 'CDS' SecurityType, 'Fireball.dbo.CDS' TableName FROM Fireball..CDSTrade WHERE IsSovereign = 0
        UNION
        SELECT TradeId, 'Sovereign CDS' SecurityType, 'Fireball.dbo.CDS' TableName FROM Fireball..CDSTrade WHERE IsSovereign = 1
        UNION
        SELECT TradeId, 'Equity Option' SecurityType, 'Fireball.dbo.EquityOption' TableName FROM Fireball..EquityOptionTrade
        UNION
        SELECT TradeId, 'Equity' SecurityType, 'Fireball.dbo.Equity' TableName FROM Fireball..EquityTrade
        UNION
        SELECT TradeId, 'Loan' SecurityType, 'Fireball.dbo.Loan' TableName FROM Fireball..LoanTrade
        UNION
        SELECT TradeId, 'Swaption' SecurityType, 'Fireball.dbo.Bond' TableName FROM Fireball..SwaptionTrade
        UNION
        SELECT TradeId, 'Preferred Stock' SecurityType, 'Fireball.dbo.Bond' TableName FROM Fireball..PreferredEquityTrade
        --UNION
        --SELECT TradeId, 'Bond' SecurityType FROM Fireball..BondTrade
       ) AS Securities ON Securities.TradeId = t.TradeId
  LEFT JOIN
       (SELECT TradeID, SecurityId 
          FROM Fireball..CDSTrade 
        UNION
        SELECT TradeID, SecurityId 
         FROM Fireball..CreditIndexTrade          
       ) AS SecurityTrade ON SecurityTrade.TradeId = t.TradeId

यह ज्यादातर कॉपी और पेस्ट है - कुछ सुधार के साथ - आपकी क्वेरी के साथ, ट्रेड टेबल के बाद FROM क्लॉज में अतिरिक्त उप-क्वेरी को हटा दिया गया है। क्या यह मेरी क्वेरी थी, मैं पिछले दो उप-प्रश्नों के लिए भी एकल-अक्षर (या अन्य लघु स्मरणीय) उपनामों का उपयोग करूँगा; मैंने अभी यह पता लगाने में समय नहीं लगाया कि SecurityTrade और Securities के लिए उपयुक्त संक्षिप्ताक्षर क्या हैं।



  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 सर्वर के अंदर नियमित अभिव्यक्ति

  2. SQL सर्वर से PHP sqlsrv_connect:SQL सर्वर से कनेक्शन स्थापित करते समय नेटवर्क से संबंधित या आवृत्ति-विशिष्ट त्रुटि उत्पन्न हुई है

  3. Scope_Identity () गलत मान लौटा रहा है?

  4. एक आईडी द्वारा समूहीकृत अल्पविराम सीमांकित सूची का चयन करें

  5. गतिशील कॉलम के साथ एसक्यूएल पिवट