# 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` 最近日结单发送日期...