Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengambil jumlah kolom dengan id yang sama di SQL?

Pertanyaan yang direvisi — TradeID juga diperlukan.

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

Saya tidak sepenuhnya yakin kueri itu masuk akal, tetapi itu masalah Anda. Ini dapat dengan mudah diperluas untuk menangani tabel lain; cukup tambahkan klausa JOIN yang sesuai.

Harap ingat untuk menyertakan nama tabel dalam pertanyaan — sungguh mengherankan betapa seringnya pertanyaan SQL diajukan tanpa memberi nama tabel (jadi bukan hanya Anda yang lupa).

Pertanyaan yang diperbarui kembali

Jadi tabel yang awalnya anonim, rupanya, Fireball.dbo.Trade atau Fireball..Trade . Saya mungkin akan menempatkan UNION 11-arah ke dalam tampilan karena kemungkinan akan digunakan di banyak tempat. Namun, mengabaikannya, kami masih dapat memasukkan informasi ke dalam kueri Anda:

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

Itu sebagian besar salin dan tempel — dengan beberapa pemformatan ulang — kueri Anda, dengan sub-kueri tambahan yang tersimpan di klausa FROM setelah tabel Perdagangan. Apakah itu kueri saya, saya akan menggunakan alias satu huruf (atau mnemonik pendek lainnya) untuk dua sub-kueri terakhir juga; Saya hanya tidak meluangkan waktu untuk memikirkan singkatan apa yang tepat untuk SecurityTrade and 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 Server:Bagaimana cara mendapatkan referensi kunci asing dari information_schema?

  2. Tidak dapat digunakan di operator PIVOT karena tidak invarian terhadap NULL

  3. bagaimana cara mendeklarasikan variabel global di SQL Server ..?

  4. Bisakah kita menjalankan skrip SQL menggunakan migrasi kode pertama?

  5. Cara terbaik untuk beban tambahan di ssis