Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để lấy tổng của cột có cùng id trong SQL?

Câu hỏi được sửa đổi - cũng cần có 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

Tôi không hoàn toàn tin rằng truy vấn là hợp lý, nhưng đó là vấn đề của bạn. Nó có thể dễ dàng được mở rộng để giao dịch với các bảng khác; chỉ cần thêm các mệnh đề JOIN thích hợp.

Hãy nhớ bao gồm tên bảng trong câu hỏi - điều đáng ngạc nhiên là tần suất các câu hỏi SQL được hỏi mà không đặt tên cho bảng (vì vậy không chỉ bạn quên bằng mọi cách).

Câu hỏi được cập nhật lại

Vì vậy, bảng ẩn danh ban đầu, rõ ràng là Fireball.dbo.Trade hoặc Fireball..Trade . Tôi có thể đặt UNION 11-way vào một chế độ xem vì nó có thể được sử dụng ở nhiều nơi. Tuy nhiên, bỏ qua điều đó, chúng tôi vẫn có thể đưa thông tin vào truy vấn của bạn:

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

Đó chủ yếu là sao chép và dán - với một số định dạng lại - truy vấn của bạn, với truy vấn phụ bổ sung được giấu trong mệnh đề FROM sau bảng Giao dịch. Đó có phải là truy vấn của tôi không, tôi cũng sẽ sử dụng bí danh một chữ cái (hoặc các bí danh ngắn gọn khác) cho hai truy vấn phụ cuối cùng; Tôi chỉ không dành thời gian tìm ra những từ viết tắt thích hợp cho SecurityTrade và 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. Làm thế nào để tạo chỉ mục cho một cột chuỗi trong sql?

  2. SQL Server:tìm các bản sao trong bảng dựa trên các giá trị trong một cột duy nhất

  3. Làm cách nào để SQL Server xác định kiểu chuyển đổi khi nó không được chỉ định?

  4. Cách thay đổi đối chiếu cấp máy chủ khi chạy phiên bản máy chủ SQL

  5. Kết hợp các hàng kết quả được truy vấn theo số nhận dạng duy nhất?