1009 lines
32 KiB
Markdown
1009 lines
32 KiB
Markdown
# Few-shot Examples for Text2SQL
|
||
|
||
以下是从经验数据集中精选的示例,用于辅助SQL生成。
|
||
|
||
## 标签: account
|
||
|
||
### 示例 1
|
||
**问题**:列出今日所有客户账户之间的股票转移记录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日客户账户间股票转移(参考日期:2026-04-02)
|
||
-- 使用 TSBAccountInstrumentMovement,MovementType='T' 表示账户间转移
|
||
-- ValueDate 为转移生效日期,关联 MCInstrument 获取证券名称
|
||
SELECT
|
||
m.MovementID,
|
||
m.AccountID AS FromAccountID,
|
||
m.TransferToAccountID,
|
||
m.InstrumentID,
|
||
i.Name AS InstrumentSymbol,
|
||
m.MovementType,
|
||
m.Quantity AS TransferQuantity,
|
||
m.ValueDate AS TransferDate
|
||
FROM TSBAccountInstrumentMovement m
|
||
LEFT JOIN MCInstrument i ON m.InstrumentID = i.InstrumentID
|
||
WHERE m.MovementType = 'T'
|
||
AND m.ValueDate = '2026-04-02'
|
||
ORDER BY m.ValueDate;
|
||
```
|
||
|
||
**说明**:- `TSBAccountInstrumentMovement` 是持仓变动流水表,记录所有证券变动事件
|
||
- `MovementType = 'T'`(Transfer)特指**账户间股票转移**,对应 `TransferToAccountID` 记录目标账户
|
||
- `ValueDate` 是转移生效日期,可按日期过滤
|
||
- 关联 `MCInstrument` 获取证券代码/名称
|
||
- 注意:`BCAc...
|
||
|
||
### 示例 2
|
||
**问题**:所有货币的客户现金总余额是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按货币统计客户现金余额
|
||
SELECT
|
||
CurrencyID,
|
||
COUNT(DISTINCT AccountID) AS AccountCount,
|
||
SUM(Settled) AS TotalSettledBalance,
|
||
SUM(AccruedCreditInterest) AS TotalCreditInterest,
|
||
SUM(AccruedDebitInterest) AS TotalDebitInterest,
|
||
SUM(Settled) + SUM(AccruedCreditInterest) - SUM(AccruedDebitInterest) AS NetBalance
|
||
FROM BCAccountCash
|
||
GROUP BY CurrencyID
|
||
ORDER BY NetBalance DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountCash` 记录账户现金余额
|
||
- `Settled` 已结算余额
|
||
- `AccruedCreditInterest` 应计存款利息
|
||
- `AccruedDebitInterest` 应计借款利息...
|
||
|
||
|
||
## 标签: aggregation
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:所有货币的客户现金总余额是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按货币统计客户现金余额
|
||
SELECT
|
||
CurrencyID,
|
||
COUNT(DISTINCT AccountID) AS AccountCount,
|
||
SUM(Settled) AS TotalSettledBalance,
|
||
SUM(AccruedCreditInterest) AS TotalCreditInterest,
|
||
SUM(AccruedDebitInterest) AS TotalDebitInterest,
|
||
SUM(Settled) + SUM(AccruedCreditInterest) - SUM(AccruedDebitInterest) AS NetBalance
|
||
FROM BCAccountCash
|
||
GROUP BY CurrencyID
|
||
ORDER BY NetBalance DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountCash` 记录账户现金余额
|
||
- `Settled` 已结算余额
|
||
- `AccruedCreditInterest` 应计存款利息
|
||
- `AccruedDebitInterest` 应计借款利息...
|
||
|
||
|
||
## 标签: broker
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:不同经纪商(如非中央结算系统持仓)的客户总持仓是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按托管位置统计持仓(非CCASS)
|
||
SELECT
|
||
loc.LocationID,
|
||
loc.Name AS LocationName,
|
||
COUNT(DISTINCT bi.AccountID) AS AccountCount,
|
||
SUM(bi.Settled) AS TotalQuantity,
|
||
SUM(bi.CostAmount) AS TotalCostAmount
|
||
FROM BCAccountLocationInstrument bi
|
||
INNER JOIN MCLocation loc ON bi.LocationID = loc.LocationID
|
||
WHERE loc.CCASSFlag = 'N'
|
||
GROUP BY loc.LocationID, loc.Name
|
||
ORDER BY TotalQuantity DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountLocationInstrument` 记录按托管位置分类的持仓
|
||
- `MCLocation` 存储托管位置信息...
|
||
|
||
|
||
## 标签: cash
|
||
|
||
### 示例 1
|
||
**问题**:所有货币的客户现金总余额是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按货币统计客户现金余额
|
||
SELECT
|
||
CurrencyID,
|
||
COUNT(DISTINCT AccountID) AS AccountCount,
|
||
SUM(Settled) AS TotalSettledBalance,
|
||
SUM(AccruedCreditInterest) AS TotalCreditInterest,
|
||
SUM(AccruedDebitInterest) AS TotalDebitInterest,
|
||
SUM(Settled) + SUM(AccruedCreditInterest) - SUM(AccruedDebitInterest) AS NetBalance
|
||
FROM BCAccountCash
|
||
GROUP BY CurrencyID
|
||
ORDER BY NetBalance DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountCash` 记录账户现金余额
|
||
- `Settled` 已结算余额
|
||
- `AccruedCreditInterest` 应计存款利息
|
||
- `AccruedDebitInterest` 应计借款利息...
|
||
|
||
### 示例 2
|
||
**问题**:今日结算后现金余额为负的账户列表。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询现金余额为负的账户
|
||
SELECT
|
||
c.AccountID,
|
||
a.Name AS AccountName,
|
||
c.CurrencyID,
|
||
c.Settled AS CashBalance,
|
||
c.UnderdueCheque,
|
||
c.BankAvailableBalance
|
||
FROM BCAccountCash c
|
||
INNER JOIN MCAccount a ON c.AccountID = a.AccountID
|
||
WHERE c.Settled < 0
|
||
ORDER BY c.Settled ASC;
|
||
```
|
||
|
||
**说明**:- `BCAccountCash.Settled` 表示已结算现金余额
|
||
- 负数表示账户透支
|
||
- 关联 `MCAccount` 获取账户名称...
|
||
|
||
|
||
## 标签: corporate_action
|
||
|
||
### 示例 1
|
||
**问题**:明天生效的公司行动涉及哪些证券?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询明日生效的公司行动 (固定日期: 2026-04-03)
|
||
SELECT
|
||
e.EntitlementID,
|
||
e.InstrumentID,
|
||
i.Name AS InstrumentName,
|
||
e.BalanceType,
|
||
e.BalanceDate AS EffectiveDate,
|
||
e.BalanceExDate AS ExDate,
|
||
e.Remark AS Description
|
||
FROM MSBEntitlement e
|
||
INNER JOIN MCInstrument i ON e.InstrumentID = i.InstrumentID
|
||
WHERE (e.BalanceDate = '2026-04-03' OR e.BalanceExDate = '2026-04-03')
|
||
AND e.State = 'A';
|
||
```
|
||
|
||
**说明**:- `MSBEntitlement` 记录权益分派信息
|
||
- `BalanceDate` 权益登记日期
|
||
- `BalanceExDate` 除权日期...
|
||
|
||
### 示例 2
|
||
**问题**:哪些公司行动的选择指令需在今日结束前提交?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日截止的公司行动选择 (固定日期: 2026-04-02)
|
||
SELECT
|
||
e.EntitlementID,
|
||
e.InstrumentID,
|
||
i.Name AS InstrumentName,
|
||
e.BalanceType,
|
||
e.ElectionPeriodTo AS Deadline,
|
||
e.ElectionOptionFlag,
|
||
e.Remark AS Description
|
||
FROM MSBEntitlement e
|
||
INNER JOIN MCInstrument i ON e.InstrumentID = i.InstrumentID
|
||
WHERE e.ElectionPeriodTo = '2026-04-02'
|
||
AND e.ElectionOptionFlag = 'Y'
|
||
AND e.State = 'A';
|
||
```
|
||
|
||
**说明**:- `ElectionPeriodTo` 选择截止日期
|
||
- `ElectionOptionFlag = 'Y'` 需要选择...
|
||
|
||
|
||
## 标签: date_function
|
||
|
||
### 示例 1
|
||
**问题**:列出所有超过3天的暂记账户分录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询超过3天的暂记账户分录 (2026-04-02)
|
||
-- 说明:TCAccountCashMovement 是现金流水表
|
||
-- NeedHoldFlag='Y' 表示暂记分录
|
||
-- Amount - ReleasedAmount 表示未释放金额(暂记余额)
|
||
-- 筛选未释放且超过3天的暂记分录
|
||
SELECT
|
||
cm.AccountID,
|
||
cm.MovementID,
|
||
cm.ValueDate,
|
||
cm.CurrencyID,
|
||
cm.Amount - ISNULL(cm.ReleasedAmount, 0) AS PendingBalance,
|
||
cm.Remark,
|
||
DATEDIFF(DAY, cm.ValueDate, '2026-04-02') AS DaysOutstanding
|
||
FROM TCAccountCashMovement cm
|
||
WHERE cm.NeedHoldFlag = 'Y'
|
||
AND cm.Amount - ISNULL(cm.ReleasedAmount, 0) != 0
|
||
AND DATEDIFF(DAY, cm.ValueDate, '2026-04-02') > 3
|
||
ORDER BY DaysOutstanding DESC, PendingBalance DESC;
|
||
```
|
||
|
||
**说明**:- `TCAccountCashMovement` 存储现金流水记录
|
||
- `NeedHoldFlag = 'Y'` 标识暂记(待确认)分录
|
||
- `Amount - ReleasedAmount` 计算未释放的暂记余额
|
||
- `DATEDIFF` 计算距今天数
|
||
- `DATEDIFF > 3` 筛选超过3天的记录...
|
||
|
||
### 示例 2
|
||
**问题**:列出后台系统中所有活跃用户账户及其最后登录日期。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询活跃用户及其登录情况
|
||
SELECT
|
||
u.UserID,
|
||
u.Name AS UserName,
|
||
u.Status,
|
||
u.LogonEnableFlag,
|
||
u.LastLogonTime,
|
||
u.BranchID,
|
||
CASE u.CompanyAEFlag WHEN 'Y' THEN '公司经纪' ELSE '个人' END AS AEType,
|
||
CASE
|
||
WHEN u.LastLogonTime >= DATEADD(DAY, -7, GETDATE()) THEN '近7天活跃'
|
||
WHEN u.LastLogonTime >= DATEADD(DAY, -30, GETDATE()) THEN '近30天活跃'
|
||
WHEN u.LastLogonTime >= DATEADD(DAY, -90, GETDATE()) THEN '近90天活跃'
|
||
ELSE '长期未登录'
|
||
END AS ActivityStatus
|
||
FROM MCUser u
|
||
WHERE u.State = 'A'
|
||
AND u.LogonEnableFlag = 'Y'
|
||
ORDER BY u.LastLogonTime DESC;
|
||
```
|
||
|
||
**说明**:- `MCUser` 存储用户信息
|
||
- `LastLogonTime` 最后登录时间...
|
||
|
||
|
||
## 标签: date_range
|
||
|
||
### 示例 1
|
||
**问题**:本月各交易所的结算费用明细如何?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按交易所统计结算费用 (2026年4月)
|
||
-- 说明:BCAccountInstrument 表中 TotalBoughtFee/TotalSoldFee 是持仓级别的交易费用字段
|
||
-- LastTransactionDate 表示该持仓最后交易日期
|
||
-- 查询逻辑:筛选最后交易日期在本月内的持仓记录,按交易所汇总交易费用
|
||
SELECT
|
||
bi.MarketID,
|
||
m.MarketName,
|
||
SUM(bi.TotalBoughtFee) AS TotalBuyFee,
|
||
SUM(bi.TotalSoldFee) AS TotalSellFee,
|
||
SUM(bi.TotalBoughtFee + bi.TotalSoldFee) AS TotalSettlementFee,
|
||
COUNT(DISTINCT bi.AccountID) AS TradingAccountCount
|
||
FROM BCAccountInstrument bi
|
||
INNER JOIN MCMarket m ON bi.MarketID = m.MarketID
|
||
WHERE bi.LastTransactionDate >= '2026-04-01' AND bi.LastTransactionDate < '2026-05-01'
|
||
GROUP BY bi.MarketID, m.MarketName
|
||
ORDER BY TotalSettlementFee DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountInstrument` 存储持仓级别信息,包含各持仓的交易费用累计
|
||
- `MCMarket` 存储市场信息,提供市场名称
|
||
- `LastTransactionDate` 用于过滤本月有交易的持仓记录
|
||
- 按市场分组汇总结算费用...
|
||
|
||
|
||
## 标签: exchange_rate
|
||
|
||
### 示例 1
|
||
**问题**:今日结算使用的汇率是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询汇率类型列表 (固定日期: 2026-04-02)
|
||
SELECT
|
||
ExchangeRateID,
|
||
Name,
|
||
NameEx
|
||
FROM HCExchangeRate
|
||
WHERE ValueDate = '2026-04-02'
|
||
ORDER BY ExchangeRateID;
|
||
```
|
||
|
||
**说明**:- `HCExchangeRate` 存储汇率类型定义
|
||
- `HCExchangeRateDetail` 存储各货币对的汇率值
|
||
- 两个表通过 `ExchangeRateID` + `ValueDate` 关联
|
||
- `ExchangeRateDirection` = 'D' 表示直接汇率...
|
||
|
||
|
||
## 标签: filter
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日所有客户账户之间的股票转移记录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日客户账户间股票转移(参考日期:2026-04-02)
|
||
-- 使用 TSBAccountInstrumentMovement,MovementType='T' 表示账户间转移
|
||
-- ValueDate 为转移生效日期,关联 MCInstrument 获取证券名称
|
||
SELECT
|
||
m.MovementID,
|
||
m.AccountID AS FromAccountID,
|
||
m.TransferToAccountID,
|
||
m.InstrumentID,
|
||
i.Name AS InstrumentSymbol,
|
||
m.MovementType,
|
||
m.Quantity AS TransferQuantity,
|
||
m.ValueDate AS TransferDate
|
||
FROM TSBAccountInstrumentMovement m
|
||
LEFT JOIN MCInstrument i ON m.InstrumentID = i.InstrumentID
|
||
WHERE m.MovementType = 'T'
|
||
AND m.ValueDate = '2026-04-02'
|
||
ORDER BY m.ValueDate;
|
||
```
|
||
|
||
**说明**:- `TSBAccountInstrumentMovement` 是持仓变动流水表,记录所有证券变动事件
|
||
- `MovementType = 'T'`(Transfer)特指**账户间股票转移**,对应 `TransferToAccountID` 记录目标账户
|
||
- `ValueDate` 是转移生效日期,可按日期过滤
|
||
- 关联 `MCInstrument` 获取证券代码/名称
|
||
- 注意:`BCAc...
|
||
|
||
|
||
## 标签: holding
|
||
|
||
### 示例 1
|
||
**问题**:各市场客户不同资产(如股票、债券、基金、虚拟资产)的总持仓是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按市场统计客户持仓
|
||
SELECT
|
||
b.MarketID,
|
||
COUNT(DISTINCT b.AccountID) AS AccountCount,
|
||
SUM(b.Settled) AS TotalQuantity,
|
||
SUM(b.CostAmount) AS TotalCostAmount,
|
||
SUM(b.TotalBoughtQuantity) AS TotalBoughtQty,
|
||
SUM(b.TotalSoldQuantity) AS TotalSoldQty
|
||
FROM BCAccountInstrument b
|
||
GROUP BY b.MarketID
|
||
ORDER BY TotalCostAmount DESC;
|
||
```
|
||
|
||
**说明**:- `BCAccountInstrument` 表记录账户在各市场的持仓
|
||
- `MarketID` 区分不同市场...
|
||
|
||
### 示例 2
|
||
**问题**:保证金账户前20大持仓(按市值)是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 保证金账户按市值排序的前20持仓
|
||
SELECT TOP 20
|
||
a.AccountID,
|
||
a.Name AS AccountName,
|
||
a.MarketValue,
|
||
a.MarginDebitRatio AS MarginDebitBalanceRatio,
|
||
a.MarginPosition,
|
||
a.CallForDeposit,
|
||
a.MarginFacilityFlag
|
||
FROM MCAccount a
|
||
WHERE a.MarginFacilityFlag = 'Y'
|
||
AND a.State = 'A'
|
||
AND a.MarketValue > 0
|
||
ORDER BY a.MarketValue DESC;
|
||
```
|
||
|
||
**说明**:- `MCAccount` 表包含所有账户信息
|
||
- `MarginFacilityFlag = 'Y'` 筛选保证金账户...
|
||
|
||
|
||
## 标签: interest
|
||
|
||
### 示例 1
|
||
**问题**:截至昨日的客户借方余额应计利息是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询客户借方余额应计利息 (截至2026-04-01)
|
||
SELECT
|
||
SUM(AccruedDebitInterest) AS TotalDebitInterestAccrued,
|
||
SUM(AccruedCreditInterest) AS TotalCreditInterestAccrued,
|
||
SUM(AccruedDebitInterest) - SUM(AccruedCreditInterest) AS NetDebitInterest,
|
||
COUNT(DISTINCT AccountID) AS AccountCount
|
||
FROM BCAccountCash
|
||
WHERE AccruedDebitInterest > 0;
|
||
```
|
||
|
||
**说明**:- `AccruedDebitInterest` 借款应计利息
|
||
- `AccruedCreditInterest` 存款应计利息...
|
||
|
||
### 示例 2
|
||
**问题**:列出所有逾期未付保证金利息的账户。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询逾期保证金利息账户
|
||
SELECT
|
||
c.AccountID,
|
||
a.Name AS AccountName,
|
||
c.LoanInterestMarginOverdue AS MarginOverdueInterest,
|
||
c.LoanInterestMarginBOverdue AS MarginBOverdueInterest,
|
||
c.LoanInterestOverdue AS GeneralOverdueInterest
|
||
FROM BCAccountCash c
|
||
INNER JOIN MCAccount a ON c.AccountID = a.AccountID
|
||
WHERE c.LoanInterestMarginOverdue > 0
|
||
OR c.LoanInterestMarginBOverdue > 0
|
||
OR c.LoanInterestOverdue > 0
|
||
ORDER BY (c.LoanInterestMarginOverdue + c.LoanInterestMarginBOverdue + c.LoanInterestOverdue) DESC;
|
||
```
|
||
|
||
**说明**:- `LoanInterestMarginOverdue` 保证金账户逾期利息
|
||
- `LoanInterestMarginBOverdue` B类保证金逾期利息...
|
||
|
||
|
||
## 标签: ipo
|
||
|
||
### 示例 1
|
||
**问题**:是否有正在进行的IPO事件,其认购状态如何?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询进行中的IPO (2026年4月)
|
||
SELECT
|
||
i.InstrumentID,
|
||
i.MarketID,
|
||
i.Name AS InstrumentName,
|
||
i.State AS InstrumentStatus,
|
||
ip.Quantity AS SubscriptionLot,
|
||
ip.SubscriptionAmount,
|
||
ip.CreatedOn AS SubscriptionDate
|
||
FROM MCInstrument i
|
||
INNER JOIN MCInstrumentIPODetail ip ON i.InstrumentID = ip.InstrumentID
|
||
WHERE YEAR(ip.CreatedOn) = 2026
|
||
AND MONTH(ip.CreatedOn) = 4
|
||
ORDER BY ip.CreatedOn DESC;
|
||
```
|
||
|
||
**说明**:- `MCInstrument` 表记录证券信息
|
||
- `MCInstrumentIPODetail` 记录IPO认购详情...
|
||
|
||
|
||
## 标签: join
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日所有客户账户之间的股票转移记录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日客户账户间股票转移(参考日期:2026-04-02)
|
||
-- 使用 TSBAccountInstrumentMovement,MovementType='T' 表示账户间转移
|
||
-- ValueDate 为转移生效日期,关联 MCInstrument 获取证券名称
|
||
SELECT
|
||
m.MovementID,
|
||
m.AccountID AS FromAccountID,
|
||
m.TransferToAccountID,
|
||
m.InstrumentID,
|
||
i.Name AS InstrumentSymbol,
|
||
m.MovementType,
|
||
m.Quantity AS TransferQuantity,
|
||
m.ValueDate AS TransferDate
|
||
FROM TSBAccountInstrumentMovement m
|
||
LEFT JOIN MCInstrument i ON m.InstrumentID = i.InstrumentID
|
||
WHERE m.MovementType = 'T'
|
||
AND m.ValueDate = '2026-04-02'
|
||
ORDER BY m.ValueDate;
|
||
```
|
||
|
||
**说明**:- `TSBAccountInstrumentMovement` 是持仓变动流水表,记录所有证券变动事件
|
||
- `MovementType = 'T'`(Transfer)特指**账户间股票转移**,对应 `TransferToAccountID` 记录目标账户
|
||
- `ValueDate` 是转移生效日期,可按日期过滤
|
||
- 关联 `MCInstrument` 获取证券代码/名称
|
||
- 注意:`BCAc...
|
||
|
||
|
||
## 标签: left_join
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日所有客户账户之间的股票转移记录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日客户账户间股票转移(参考日期:2026-04-02)
|
||
-- 使用 TSBAccountInstrumentMovement,MovementType='T' 表示账户间转移
|
||
-- ValueDate 为转移生效日期,关联 MCInstrument 获取证券名称
|
||
SELECT
|
||
m.MovementID,
|
||
m.AccountID AS FromAccountID,
|
||
m.TransferToAccountID,
|
||
m.InstrumentID,
|
||
i.Name AS InstrumentSymbol,
|
||
m.MovementType,
|
||
m.Quantity AS TransferQuantity,
|
||
m.ValueDate AS TransferDate
|
||
FROM TSBAccountInstrumentMovement m
|
||
LEFT JOIN MCInstrument i ON m.InstrumentID = i.InstrumentID
|
||
WHERE m.MovementType = 'T'
|
||
AND m.ValueDate = '2026-04-02'
|
||
ORDER BY m.ValueDate;
|
||
```
|
||
|
||
**说明**:- `TSBAccountInstrumentMovement` 是持仓变动流水表,记录所有证券变动事件
|
||
- `MovementType = 'T'`(Transfer)特指**账户间股票转移**,对应 `TransferToAccountID` 记录目标账户
|
||
- `ValueDate` 是转移生效日期,可按日期过滤
|
||
- 关联 `MCInstrument` 获取证券代码/名称
|
||
- 注意:`BCAc...
|
||
|
||
|
||
## 标签: limit
|
||
|
||
### 示例 1
|
||
**问题**:哪些客户已超过其信用额度?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询超信用额度客户(使用 MarginLimit)
|
||
-- 注意:MCAccount 无 CreditLimit 字段,应用 MarginLimit
|
||
SELECT
|
||
AccountID,
|
||
Name AS AccountName,
|
||
MarginLimit,
|
||
MarketValue,
|
||
MarginLimit - MarketValue AS AvailableCredit,
|
||
CASE
|
||
WHEN MarketValue > MarginLimit THEN '超额'
|
||
WHEN MarketValue > MarginLimit * 0.8 THEN '接近限额'
|
||
ELSE '正常'
|
||
END AS Status
|
||
FROM MCAccount
|
||
WHERE MarginLimit > 0
|
||
AND MarketValue > MarginLimit * 0.8
|
||
ORDER BY (MarketValue - MarginLimit) DESC;
|
||
```
|
||
|
||
**说明**:- `MCAccount.MarginLimit` 保证金/信用限额(注意:无 `CreditLimit` 字段)
|
||
- `MCAccount.MarketValue` 持仓市值
|
||
- `MarginBLimit` 是单独借款限额,注意区分...
|
||
|
||
### 示例 2
|
||
**问题**:保证金账户前20大持仓(按市值)是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 保证金账户按市值排序的前20持仓
|
||
SELECT TOP 20
|
||
a.AccountID,
|
||
a.Name AS AccountName,
|
||
a.MarketValue,
|
||
a.MarginDebitRatio AS MarginDebitBalanceRatio,
|
||
a.MarginPosition,
|
||
a.CallForDeposit,
|
||
a.MarginFacilityFlag
|
||
FROM MCAccount a
|
||
WHERE a.MarginFacilityFlag = 'Y'
|
||
AND a.State = 'A'
|
||
AND a.MarketValue > 0
|
||
ORDER BY a.MarketValue DESC;
|
||
```
|
||
|
||
**说明**:- `MCAccount` 表包含所有账户信息
|
||
- `MarginFacilityFlag = 'Y'` 筛选保证金账户...
|
||
|
||
|
||
## 标签: margin
|
||
|
||
### 示例 1
|
||
**问题**:列出今日发出的所有追收保证金通知及其回复状态。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日追缴保证金记录 (参考日期: 2026-04-02)
|
||
-- 使用 MCAccount 的账户级追缴字段(CallForDepositDate = 追缴通知发出日期)
|
||
-- 注意:HCAccountMarginCallForDeposit 是追缴每日快照表,不含"通知发出日"字段
|
||
SELECT
|
||
a.AccountID,
|
||
a.Name AS AccountName,
|
||
a.CallForDeposit AS CallAmount,
|
||
a.CallForDepositDate AS IssueDate,
|
||
a.CallForDepositDays AS OverdueDays
|
||
FROM MCAccount a
|
||
WHERE a.CallForDepositDate = '2026-04-02'
|
||
ORDER BY a.CallForDeposit DESC;
|
||
```
|
||
|
||
**说明**:- `MCAccount.CallForDepositDate` = 追缴通知发出日期,`CallForDeposit` = 追缴金额
|
||
- `CallForDeposit < 0` 表示已结清;如查活跃追缴,应筛选 `CallForDeposit > 0`
|
||
- `HCAccountMarginCallForDeposit` 是追缴每日历史快照,不适合查询"今日发出的通知"
|
||
- `CallStatu...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日起保证金比例发生变动的所有证券。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询保证金比例变动的证券 (固定日期: 2026-04-02)
|
||
SELECT
|
||
i.InstrumentID,
|
||
i.Name AS InstrumentName,
|
||
i.MarginPercentage AS CurrentMarginRatio,
|
||
i.MarginChangeDate
|
||
FROM MCInstrument i
|
||
WHERE i.MarginChangeDate = '2026-04-02'
|
||
ORDER BY i.MarginPercentage DESC;
|
||
```
|
||
|
||
**说明**:- `MCInstrument.MarginPercentage` 当前保证金比例
|
||
- `MarginChangeDate` 变动日期...
|
||
|
||
|
||
## 标签: ordering
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日所有客户账户之间的股票转移记录。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日客户账户间股票转移(参考日期:2026-04-02)
|
||
-- 使用 TSBAccountInstrumentMovement,MovementType='T' 表示账户间转移
|
||
-- ValueDate 为转移生效日期,关联 MCInstrument 获取证券名称
|
||
SELECT
|
||
m.MovementID,
|
||
m.AccountID AS FromAccountID,
|
||
m.TransferToAccountID,
|
||
m.InstrumentID,
|
||
i.Name AS InstrumentSymbol,
|
||
m.MovementType,
|
||
m.Quantity AS TransferQuantity,
|
||
m.ValueDate AS TransferDate
|
||
FROM TSBAccountInstrumentMovement m
|
||
LEFT JOIN MCInstrument i ON m.InstrumentID = i.InstrumentID
|
||
WHERE m.MovementType = 'T'
|
||
AND m.ValueDate = '2026-04-02'
|
||
ORDER BY m.ValueDate;
|
||
```
|
||
|
||
**说明**:- `TSBAccountInstrumentMovement` 是持仓变动流水表,记录所有证券变动事件
|
||
- `MovementType = 'T'`(Transfer)特指**账户间股票转移**,对应 `TransferToAccountID` 记录目标账户
|
||
- `ValueDate` 是转移生效日期,可按日期过滤
|
||
- 关联 `MCInstrument` 获取证券代码/名称
|
||
- 注意:`BCAc...
|
||
|
||
|
||
## 标签: statement
|
||
|
||
### 示例 1
|
||
**问题**:有多少客户报表已生成成功但尚未发送?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询已生成但未发送的报表
|
||
SELECT
|
||
a.AccountID,
|
||
a.Name AS AccountName,
|
||
a.LastDailyStatementDate,
|
||
a.LastMonthlyStatementDate,
|
||
a.LastStatementGenerateTime,
|
||
a.LastStatementSendTime,
|
||
CASE
|
||
WHEN a.LastStatementGenerateTime > a.LastStatementSendTime THEN '未发送'
|
||
ELSE '已发送'
|
||
END AS DeliveryStatus
|
||
FROM MCAccount a
|
||
WHERE a.LastStatementGenerateTime IS NOT NULL
|
||
AND (a.LastStatementSendTime IS NULL
|
||
OR a.LastStatementGenerateTime > a.LastStatementSendTime)
|
||
ORDER BY a.LastStatementGenerateTime DESC;
|
||
```
|
||
|
||
**说明**:- `LastStatementGenerateTime` 报表生成时间
|
||
- `LastStatementSendTime` 报表发送时间...
|
||
|
||
|
||
## 标签: trade
|
||
|
||
### 示例 1
|
||
**问题**:按对手方列出截至[日期]的所有未结算交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按对手方统计截至 2026-04-02 的未结算交易
|
||
-- 使用 TSBBrokerContract(经纪商合约表),按 BrokerID(对手方经纪商)分组
|
||
-- SettleStatus='U' 表示未结算;CashSettleDate <= '2026-04-02' 筛选截至日
|
||
SELECT
|
||
b.BrokerID,
|
||
m.Name AS BrokerName,
|
||
COUNT(*) AS UnsettledTradeCount,
|
||
SUM(b.SettleQuantity) AS TotalUnsettledQty,
|
||
SUM(b.SettleAmount) AS TotalUnsettledAmount,
|
||
MIN(b.BuySell) + '~' + MAX(b.BuySell) AS BuySellRange,
|
||
MIN(b.CashSettleDate) AS EarliestSettleDate,
|
||
MAX(b.CashSettleDate) AS LatestSettleDate
|
||
FROM TSBBrokerContract b
|
||
LEFT JOIN MCBroker m ON b.BrokerID = m.BrokerID
|
||
WHERE b.SettleStatus = 'U'
|
||
AND b.CashSettleDate <= '2026-04-02'
|
||
GROUP BY b.BrokerID, m.Name
|
||
ORDER BY TotalUnsettledAmount DESC;
|
||
```
|
||
|
||
**说明**:- `TSBBrokerContract` 是经纪商/对手方合约表,记录与外部对手方的交易合约,`BrokerID` 即对手方标识
|
||
- `SettleStatus = 'U'` 表示未结算;`CashSettleDate <= '2026-04-02'` 筛选截至日未结清的合约
|
||
- 关联 `MCBroker` 获取对手方经纪商名称
|
||
- 按 `BrokerID` 分组汇总未结算数量和金额...
|
||
|
||
### 示例 2
|
||
**问题**:列出今日到期的所有股票借贷交易。
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询今日到期的股票借贷 (参考日期: 2026-04-02)
|
||
-- MCMarket 表仅包含 HKEX/OSL/SETW,无独立借贷市场标识
|
||
-- 股票借贷可能在持仓变动类型 HoldType 中标识,或在专门的 StockBorrowing 表中
|
||
-- 此 SQL 按 DueBuy/DueSell 显示当前待交收证券,作为借贷合约的近似替代
|
||
SELECT
|
||
bi.AccountID,
|
||
a.Name AS AccountName,
|
||
bi.InstrumentID,
|
||
i.Name AS InstrumentName,
|
||
bi.DueBuy AS BorrowQuantity,
|
||
bi.DueSell AS LoanQuantity,
|
||
bi.DueBuy - bi.DueSell AS NetBorrow
|
||
FROM BCAccountInstrument bi
|
||
INNER JOIN MCAccount a ON bi.AccountID = a.AccountID
|
||
INNER JOIN MCInstrument i ON bi.InstrumentID = i.InstrumentID
|
||
WHERE bi.DueBuy > 0 OR bi.DueSell > 0;
|
||
```
|
||
|
||
**说明**:- `DueBuy/DueSell` 表示待交收数量(借款买入/借出卖出),反映股票借贷待到期情况
|
||
- `MCMarket` 表无 `MarketType='BORROW'` 标识,现有市场仅为 HKEX/OSL/SETW
|
||
- 股票借贷详情可能存储在 `TSBAccountLoanContract` 或其他借贷专用表中,需业务确认...
|
||
|
||
|
||
## 标签: union
|
||
|
||
### 示例 1
|
||
**问题**:按结算日期划分的未结算交易总风险敞口是多少?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 按结算日期分组的未结算交易敞口
|
||
SELECT
|
||
SettlementType,
|
||
SUM(Amount) AS TotalExposure
|
||
FROM (
|
||
SELECT 'DueBuy_T1' AS SettlementType, SUM(DueBuy) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'DueSell_T1' AS SettlementType, SUM(DueSell) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'NextDayDueBuy' AS SettlementType, SUM(NextDayDueBuy) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'NextDayDueSell' AS SettlementType, SUM(NextDayDueSell) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'NextTwoDayDueBuy' AS SettlementType, SUM(NextTwoDayDueBuy) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'NextTwoDayDueSell' AS SettlementType, SUM(NextTwoDayDueSell) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'TodayDueBuy' AS SettlementType, SUM(TodayDueBuy) AS Amount FROM BCAccountInstrument
|
||
UNION ALL
|
||
SELECT 'TodayDueSell' AS SettlementType, SUM(TodayDueSell) AS Amount FROM BCAccountInstrument
|
||
) t
|
||
GROUP BY SettlementType
|
||
ORDER BY SettlementType;
|
||
```
|
||
|
||
**说明**:- `BCAccountInstrument` 表包含所有账户的证券持仓和交收信息
|
||
- `DueBuy/DueSell` 表示T+1到期的买卖数量...
|
||
|
||
### 示例 2
|
||
**问题**:今日/指定日期发放了多少份日结单或月结单?
|
||
|
||
**SQL**:
|
||
```sql
|
||
-- 查询报表发放统计 (2026-04-02)
|
||
SELECT
|
||
'Daily Statement' AS StatementType,
|
||
COUNT(*) AS StatementCount
|
||
FROM MCAccount
|
||
WHERE LastDailyStatementDate = '2026-04-02'
|
||
UNION ALL
|
||
SELECT
|
||
'Monthly Statement' AS StatementType,
|
||
COUNT(*) AS StatementCount
|
||
FROM MCAccount
|
||
WHERE LastMonthlyStatementDate = '2026-04-02';
|
||
```
|
||
|
||
**说明**:- `MCAccount` 记录账户报表发送日期
|
||
- `LastDailyStatementDate` 最近日结单发送日期...
|
||
|
||
|