MSSQL, Express, Developer
понедельник, 24 ноября 2025 г.
понедельник, 10 ноября 2025 г.
25.11.10, DeepSeek, SQL, Table, Trades, Matching, Positions
25.11.10, DeepSeek, SQL, Table, Trades, Matching, Positions
USE [Example01]
GO
/****** Object: Table [dbo].[TradesExample] Script Date: 10.11.2025 21:49:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TradesExample](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TradeNumber] [int] NOT NULL,
[Qty] [int] NOT NULL,
[ContrTradeNumber] [int] NOT NULL
) ON [PRIMARY]
GO
-------------------------------------------------------------------------
USE Example01
SELECT ContrTradeNumber, SUM(Qty) AS TotalQty
FROM dbo.TradesExample
GROUP BY ContrTradeNumber;
--------------------------------------------------------------------------
SELECT TOP (1000) [ID]
,[TradeNumber]
,[Qty]
,[ContrTradeNumber]
FROM [Example01].[dbo].[TradesExample]
----------------------------------------------------------------------------
| 2 | 1 | 2 | 1 |
| 3 | 2 | -1 | 1 |
| 4 | 3 | -1 | 1 |
| 5 | 4 | -3 | 4 |
| 6 | 5 | 1 | 4 |
| 7 | 6 | 2 | 4 |
| 8 | 8 | -1 | 8 |
| 9 | 9 | -1 | 9 |
| 10 | 10 | 1 | 8 |
| 11 | 11 | 1 | 9 |
| NULL | NULL | NULL | NULL |
----------------------------------------------------------------------------
USE [Example01]
GO
INSERT INTO [dbo].[TradesExample]
([TradeNumber]
,[Qty]
,[ContrTradeNumber])
VALUES
(<TradeNumber, int,>
,<Qty, int,>
,<ContrTradeNumber, int,>)
GO
----------------------------------------------------------------------------
Это операции по открытию, закоытию позиций
ID, TradeNumber, Qty, ContrTradeNumber
2 1 2 1
3 2 -1 1
4 3 -1 1
5 4 -3 4
6 5 1 4
7 6 2 4
8 8 -1 8
9 9 -1 9
10 10 1 8
11 11 1 9
---------------------------------------------------------------------------------------------
Перескакивать через 0 нельзя.
НЕообходимо c начала закрыть в 0.
А потом открыть позиции от себя (со своим номером сделки.)
----------------------------------------------------------------------------------------------
А это запрос с группировкой на предмет открытых позиций, после сбоя
USE Example01
SELECT ContrTradeNumber, SUM(Qty) AS TotalQty
FROM dbo.TradesExample
GROUP BY ContrTradeNumber;
А потом уже открыть сделку от своего ТradeNumber
----------------
ContrTradeNumber, SUM(Qty) AS TotalQty
1 0
4 0
8 0
9 0
----------------
Вроде все понятно
Через 0 мы не можем перескочить,
потому что мы можем закрыть число не большее позиции (для Long)
-----------------------------------------------------------------------------------------------------