संशोधित प्रश्न — 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 के लिए उपयुक्त संक्षिप्ताक्षर क्या हैं।