Files
ai-g3sb-backman2.0/data/experiences/fewshot_examples.md
T
2026-04-10 16:52:07 +08:00

32 KiB
Raw Blame History

Few-shot Examples for Text2SQL

以下是从经验数据集中精选的示例,用于辅助SQL生成。

标签: account

示例 1

问题:列出今日所有客户账户之间的股票转移记录。

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:

-- 按货币统计客户现金余额
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:

-- 按对手方统计截至 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:

-- 按货币统计客户现金余额
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:

-- 按对手方统计截至 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:

-- 按托管位置统计持仓(非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:

-- 按货币统计客户现金余额
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:

-- 查询现金余额为负的账户
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:

-- 查询明日生效的公司行动 (固定日期: 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:

-- 查询今日截止的公司行动选择 (固定日期: 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:

-- 查询超过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:

-- 查询活跃用户及其登录情况
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:

-- 按交易所统计结算费用 (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:

-- 查询汇率类型列表 (固定日期: 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:

-- 按对手方统计截至 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:

-- 查询今日客户账户间股票转移(参考日期: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:

-- 按市场统计客户持仓
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:

-- 保证金账户按市值排序的前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:

-- 查询客户借方余额应计利息 (截至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:

-- 查询逾期保证金利息账户
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:

-- 查询进行中的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:

-- 按对手方统计截至 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:

-- 查询今日客户账户间股票转移(参考日期: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:

-- 按对手方统计截至 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:

-- 查询今日客户账户间股票转移(参考日期: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:

-- 查询超信用额度客户(使用 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:

-- 保证金账户按市值排序的前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:

-- 查询今日追缴保证金记录 (参考日期: 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:

-- 查询保证金比例变动的证券 (固定日期: 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:

-- 按对手方统计截至 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:

-- 查询今日客户账户间股票转移(参考日期: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:

-- 查询已生成但未发送的报表
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:

-- 按对手方统计截至 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:

-- 查询今日到期的股票借贷 (参考日期: 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:

-- 按结算日期分组的未结算交易敞口
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:

-- 查询报表发放统计 (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 最近日结单发送日期...