SQL脚本积累之三-----case....when...的使用示例

/*
保证金可用余额=现金
+∑(可充抵保证金的证券市值×折算率)
+∑[(融资买入证券市值-融资买入金额)×折算率]
+∑[(融券卖出金额-融券卖出证券市值)×折算率]
-∑融券卖出金额
-∑融资买入证券金额×融资保证金比例(最小50%)
-∑融券卖出证券市值×融券保证金比例(最小50%)
-利息及费用
-冻结中可用保证金
1现金=自有可用现金 + 自有冻结现金 + 融券卖出可用现金+ 融券卖出冻结现金
2可充抵保证金的证券市值 = ∑[(自有可用持仓中+自有交割冻结持仓)×市价×折算率]—-【剔除非担保品证券】
3融资买入证券市值 =当前本代码融资买入总持仓数量×市价
4融资买入金额 = 本代码融资负债未还金额
5融券卖出金额=MAX[融券卖出证券(尚未偿还)的数量×融券卖出时发生的价格-该融券负债发生时的交易费,0]
6融券卖出证券市值=融券卖出证券(尚未偿还)数量×市价
7融资买入证券金额 = 融资负债未还金额
8利息及费用 = 已计提(罚息,逾期息费,融资管理费,融券管理费,融资利息,融券利息)
注:
∑[(融资买入证券市值-融资买入金额)×折算率]、∑[(融券卖出金额-融券卖出证券市值)×折算率]中的折算率是指融资买入、
融券卖出证券对应的折算率(调出担保品范围的按0%计算);当融资买入证券市值低于融资买入金额或融券卖出证券市值高于融
券卖出金额时,折算率按100%计算

注意:负债代码
1. 移除证券公式标的物,保证金比例为100%
2. 移除证券公式担保物,保证金比例为100%,折算率为0%
3. 移除交易所标的物,同1
4. 移除交易所担保物,同2
*/

declare @CapitalAccount varchar(50)
declare @RZRQCapitalAccountID int
----------------------------------------------------------------------------------------
declare @LastPriceA  decimal(20,3)     --代码000002的市价
declare @ExchangRateA  decimal(20,3)   --代码000002的折算率
declare @RZMarginRatioA decimal(20,3)  --代码000002的融资保证金比例
declare @RQMarginRatioA decimal(20,3)  --代码000002的融券保证金比例
----------------------------------------------------------------------------------------
declare @LastPriceB  decimal(20,3)     --代码000001的市价
declare @ExchangRateB  decimal(20,3)   --代码000001的折算率
declare @RZMarginRatioB decimal(20,3)  --代码000001的融资保证金比例
declare @RQMarginRatioB decimal(20,3)  --代码000001的融券保证金比例
----------------------------------------------------------------------------------------
declare @LastPriceC  decimal(20,3)     --代码000005的市价
declare @ExchangRateC  decimal(20,3)   --代码000005的折算率
declare @RZMarginRatioC decimal(20,3)  --代码000005的融资保证金比例
declare @RQMarginRatioC decimal(20,3)  --代码000005的融券保证金比例
----------------------------------------------------------------------------------------
set @CapitalAccount='030000000207'
set @RZRQCapitalAccountID='1'
set @LastPriceA=10.8
set @LastPriceB=21.67
set @LastPriceC=2.72
set @ExchangRateA=0.75
set @ExchangRateB=0.75
set @ExchangRateC=0.75
set @RZMarginRatioA=0.8
set @RZMarginRatioB=0.8
set @RZMarginRatioC=0.8
set @RQMarginRatioA=0.8
set @RQMarginRatioB=0.8
set @RQMarginRatioC=0.8

declare @CashMoney decimal(20,3)  --总现金
declare @HoldMoney decimal(20,3)  --可冲抵保证金的证券市值折算
declare @RZMoney decimal(20,3) --融资盈亏折算
declare @RQMoney decimal(20,3) --融券盈亏折算
declare @RQSumMoney decimal(20,3)  --融券卖出总金额
declare @RZLiabilitiesMoney decimal(20,3)  --融资负债占用保证金
declare @RQLiabilitiesMoney decimal(20,3) --融券负债占用保证金
declare @InterestMoney decimal(20,3) --总利息
declare @FreezeMoney decimal(20,3) --冻结保证金

--现金
SELECT @CashMoney=isnull(tempE.总现金,0) FROM 
(
    SELECT [RZRQCapitalAccountID],SUM(tempA.自有可用+tempA.自有冻结+tempA.融券可用+tempA.融券冻结) [总现金] FROM 
    (
        --信用账户资金内存表
        SELECT [RZRQCapitalAccountID],SUM([AvailableCapitalDelta]) [自有可用],SUM([FreezeCapitalTotalDelta]) [自有冻结],
               SUM([RQAvailableCapital]) [融券可用],SUM([RQFreezeAvailableCapital]) [融券冻结] 
        FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable_Delta]
        where [RZRQCapitalAccountID]=@RZRQCapitalAccountID
        group by [RZRQCapitalAccountID]
        union all
        --信用账户资金表
        SELECT [RZRQCapitalAccountID],[AvailableCapital],[FreezeCapitalTotal],[RQAvailableCapital],[RQFreezeAvailableCapital] 
        FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable]
        where [RZRQCapitalAccountID]=@RZRQCapitalAccountID
    ) tempA group by [RZRQCapitalAccountID]
) tempE,
(SELECT * FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable]) tempF
 where tempE.RZRQCapitalAccountID=tempF.RZRQCapitalAccountID

print '1、总现金='+convert(varchar(20),@CashMoney)
----------------------------------------------------------------------------------------
declare @CodeNum int    --定义可充抵保证金的代码记录数量

--可充抵保证金的证券市值*折算率
SELECT @HoldMoney=isnull(SUM(tempA.总信用持仓*tempA.市价*tempA.折算率),0) FROM 
(
    SELECT [CapitalAccount],[code]
          ,[XYHoldAmount]+[XYReckonFreezeAmount] [总信用持仓]
          ,[市价]=case code when '000002' then @LastPriceA 
                            when '000001' then @LastPriceB
                            when '000005' then @LastPriceC
                  end
          ,[折算率]=case code when '000002' then @ExchangRateA 
                              when '000001' then @ExchangRateB
                              when '000005' then @ExchangRateC
                    end
    FROM [VTS_ReckoningCounter].dbo.[RZRQ_HoldAccount]
    WHERE  [CapitalAccount]=@CapitalAccount
    and [code] in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityMortagagedCode]
                   where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                              where [RZRQCapitalAccount]=@CapitalAccount))
) tempA
group by tempA.CapitalAccount

SELECT @CodeNum=count(*) FROM [VTS_ReckoningCounter].dbo.[RZRQ_HoldAccount]
WHERE  [CapitalAccount]=@CapitalAccount
and [code] in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityMortagagedCode]
               where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                          where [RZRQCapitalAccount]=@CapitalAccount))
if(@CodeNum=0)
  begin
    set @HoldMoney=0
    print '2、可充抵保证金的证券市值折算=0------(没有任何可充抵担保物代码)'
   end                                                                                                               
else
    print '2、可充抵保证金的证券市值折算='+convert(varchar(20),@HoldMoney)

----------------------------------------------------------------------------------------
declare @CodeNumZ int     --定义具有的持仓代码记录数量

--(融资买入证券市值-融资买入金额)×折算率
SELECT @RZMoney=isnull(SUM(tempD.融资盈亏*tempD.折算率),0) FROM 
(
    SELECT tempC.CapitalAccount,tempC.Code,tempC.融资盈亏
          ,[折算率]=case when (code='000002' and [融资盈亏]>0) then @ExchangRateA
                         when (code='000002' and [融资盈亏]<=0) then 1
                         when (code='000001' and [融资盈亏]>0) then @ExchangRateB
                         when (code='000001' and [融资盈亏]<=0) then 1
                         when (code='000005' and [融资盈亏]>0) then @ExchangRateC
                         when (code='000005' and [融资盈亏]<=0) then 1
                         end
    FROM 
    (
        SELECT tempB.CapitalAccount,tempB.Code,SUM(tempB.融资买入证券市值) [融资盈亏] FROM 
        (
            SELECT tempA.CapitalAccount,tempA.Code,tempA.融资总持仓*tempA.市价 [融资买入证券市值] FROM 
            (
                SELECT [CapitalAccount],[code]
                      ,[RZHoldAmount]+ [RZReckonFreezeAmount] [融资总持仓]
                      ,[市价]=case code when '000002' then @LastPriceA 
                                        when '000001' then @LastPriceB
                                        when '000005' then @LastPriceC
                              end
                FROM [VTS_ReckoningCounter].dbo.[RZRQ_HoldAccount]
                WHERE  [CapitalAccount]=@CapitalAccount
            ) tempA
            union all
            SELECT [CapitalAccount],[Code],-1*SUM([RZBuyLiabilitiesSum]-[PayBackSum]) [融资买入金额] 
            FROM [VTS_ReckoningCounter].dbo.[RZRQ_RZLiabilities]
            where  [CapitalAccount]=@CapitalAccount
            group by [CapitalAccount],[Code]
        ) tempB group by tempB.CapitalAccount,tempB.Code
    ) tempC where Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityMortagagedCode]
                           where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                      where [RZRQCapitalAccount]=@CapitalAccount))
) tempD  group by tempD.CapitalAccount


SELECT @CodeNumZ=COUNT(*) FROM [VTS_ReckoningCounter].dbo.[RZRQ_HoldAccount]
WHERE  [CapitalAccount]=@CapitalAccount
if(@CodeNum=0)
  begin
    set @RZMoney=0
    print '3、融资盈亏折算=0----(没有任何持仓代码记录)'
   end                                                                                                               
else
    print '3、融资盈亏折算='+convert(varchar(20),@RZMoney)

----------------------------------------------------------------------------------------
declare @CodeNumRQ int     --定义具有的融券负债记录数量

--(融券卖出金额-融券卖出证券市值)×折算率
SELECT @RQMoney=isnull(SUM(tempD.融券盈亏*tempD.折算率),0) FROM
(
    SELECT tempC.CapitalAccount,tempC.Code,tempC.融券盈亏 
          ,[折算率]=case when (code='000002' and [融券盈亏]>0) then @ExchangRateA 
                         when (code='000002' and [融券盈亏]<=0) then 1
                         when (code='000001' and [融券盈亏]>0) then @ExchangRateB 
                         when (code='000001' and [融券盈亏]<=0) then 1
                         when (code='000005' and [融券盈亏]>0) then @ExchangRateC 
                         when (code='000005' and [融券盈亏]<=0) then 1 
                    end
    FROM 
    (
        SELECT tempB.CapitalAccount,tempB.Code,SUM(tempB.融券卖出金额) [融券盈亏] FROM 
        (
            SELECT [CapitalAccount],[Code],SUM(([RQBuyAmount]-[PayBackSum])*[TradePrice]-[CostAmount]) [融券卖出金额] 
            FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
            where  [CapitalAccount]=@CapitalAccount
            group by [CapitalAccount],[Code]
            union all
            SELECT tempA.CapitalAccount,tempA.Code,-1*tempA.未还融券数量*tempA.市价 [融券卖出证券市值] FROM 
            (
            SELECT [CapitalAccount],[Code],SUM([RQBuyAmount]-[PayBackSum]) [未还融券数量]
                  ,[市价]=case code when '000002' then @LastPriceA 
                                    when '000001' then @LastPriceB
                                    when '000005' then @LastPriceC
                           end
            FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
            where  [CapitalAccount]=@CapitalAccount
            group by [CapitalAccount],[Code]
            ) tempA
        ) tempB group by tempB.CapitalAccount,tempB.Code
    ) tempC where Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityMortagagedCode]
                           where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                      where [RZRQCapitalAccount]=@CapitalAccount))
) tempD group by CapitalAccount

SELECT @CodeNumRQ=COUNT(*) FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
where  [CapitalAccount]=@CapitalAccount

if(@CodeNumRQ=0)
  begin
    set @RQMoney=0
    print '4、融券盈亏折算=0----(没有任何融券负债记录)'
   end                                                                                                               
else
    print '4、融券盈亏折算='+convert(varchar(20),@RQMoney)

----------------------------------------------------------------------------------------
--融券卖出金额
SELECT @RQSumMoney=isnull(SUM(tempA.融券卖出金额),0) FROM
(
SELECT [CapitalAccount],[Code],SUM(([RQBuyAmount]-[PayBackSum])*[TradePrice]-[CostAmount]) [融券卖出金额] 
FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
where  [CapitalAccount]=@CapitalAccount
group by [CapitalAccount],[Code]
) tempA group by [CapitalAccount]

if(@CodeNumRQ=0)
  begin
    set @RQSumMoney=0
    print '5、融券卖出总金额=0----(没有任何融券负债记录)'
   end                                                                                                               
else
    print '5、融券卖出总金额='+convert(varchar(20),@RQSumMoney)

-------------------------------------------------------------------------------------------------------------------------
declare @CodeNumRZ int     --定义具有的融资负债记录数量

--融资买入证券金额*融资保证金比例
SELECT @RZLiabilitiesMoney=isnull(SUM(tempA.融资买入金额*tempA.融资保证金比例),0) FROM
(
    SELECT [CapitalAccount],[Code],SUM(([RZBuyLiabilitiesSum]-[PayBackSum])) [融资买入金额] 
          ,[融资保证金比例]=case when ([Code]='000002' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                    where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                               where [RZRQCapitalAccount]=@CapitalAccount))) then @RZMarginRatioA 
                                 when ([Code]='000002' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                        where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                   where [RZRQCapitalAccount]=@CapitalAccount))) then 1                                                              
                                 when ([Code]='000001' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                    where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                               where [RZRQCapitalAccount]=@CapitalAccount))) then @RZMarginRatioB
                                 when ([Code]='000001' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                        where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                   where [RZRQCapitalAccount]=@CapitalAccount))) then 1                                                             
                                 when  ([Code]='000005' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                     where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                where [RZRQCapitalAccount]=@CapitalAccount)))  then @RZMarginRatioC 
                                 when  ([Code]='000005' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                         where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                    where [RZRQCapitalAccount]=@CapitalAccount)))  then 1 
          end
    FROM [VTS_ReckoningCounter].dbo.[RZRQ_RZLiabilities]
    where  [CapitalAccount]=@CapitalAccount
    group by [CapitalAccount],[Code]
) tempA group by [CapitalAccount]

SELECT @CodeNumRZ=COUNT(*) FROM [VTS_ReckoningCounter].dbo.[RZRQ_RZLiabilities]
where  [CapitalAccount]=@CapitalAccount

if(@CodeNumRZ=0)
  begin
    set @RZLiabilitiesMoney=0
    print '6、融资负债占用保证金=0----(没有任何融资负债记录)'
   end                                                                                                               
else
    print '6、融资负债占用保证金='+convert(varchar(20),@RZLiabilitiesMoney)


----------------------------------------------------------------------------------------
--融券卖出证券市值*融券保证金比例
SELECT @RQLiabilitiesMoney=isnull(SUM(tempB.融券卖出证券市值*tempB.融券保证金比例),0) FROM 
(
    SELECT tempA.CapitalAccount,tempA.Code,tempA.未还融券数量*tempA.市价 [融券卖出证券市值] 
          ,[融券保证金比例]=case when ([Code]='000002' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                    where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                               where [RZRQCapitalAccount]=@CapitalAccount))) then @RQMarginRatioA 
                                 when ([Code]='000002' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                        where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                   where [RZRQCapitalAccount]=@CapitalAccount))) then 1                                                              
                                 when ([Code]='000001' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                    where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                               where [RZRQCapitalAccount]=@CapitalAccount))) then @RQMarginRatioB
                                 when ([Code]='000001' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                        where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                   where [RZRQCapitalAccount]=@CapitalAccount))) then 1                                                             
                                 when  ([Code]='000005' and Code in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                     where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                where [RZRQCapitalAccount]=@CapitalAccount)))  then @RQMarginRatioC 
                                 when  ([Code]='000005' and Code not in (SELECT [code] FROM [VTS_ManagementCenter].[dbo].[RZRQ_SecurityUnderlyingCode]
                                                                         where [SecurityCompanyID]=(SELECT [SecurityCompanyID] FROM [VTS_ManagementCenter].[dbo].[RZRQ_TraderBasicInfo]
                                                                                                    where [RZRQCapitalAccount]=@CapitalAccount)))  then 1                                                              
                             end
    FROM 
    (
        SELECT [CapitalAccount],[Code],SUM([RQBuyAmount]-[PayBackSum]) [未还融券数量]
              ,[市价]=case code when '000002' then @LastPriceA 
                                when '000001' then @LastPriceB
                                when '000005' then @LastPriceC
                       end
        FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
        where  [CapitalAccount]=@CapitalAccount
        group by [CapitalAccount],[Code]
    ) tempA
) tempB group by [CapitalAccount]

if(@CodeNumRQ=0)
  begin
    set @RQLiabilitiesMoney=0
    print '7、融券负债占用保证金=0----(没有任何融券负债记录)'
   end                                                                                                               
else
    print '7、融券负债占用保证金='+convert(varchar(20),@RQLiabilitiesMoney)

----------------------------------------------------------------------------------------
--费用以及利息
SELECT @InterestMoney=isnull(SUM(tempM.总费用),0) FROM 
(
    SELECT tempF.CapitalAccount,tempA.[罚息]+tempA.[逾期息费]+tempA.[融资额度占用费]+tempA.[融券额度占用费] [总费用] FROM 
    (
        --信用账户资金内存表
        SELECT [RZRQCapitalAccountID],SUM([ChargeTotalDelta]) [罚息],SUM([LateChargeTotalDelta]) [逾期息费],
               SUM([RZLimitDisplayTotalDelta]) [融资额度占用费],SUM([RQLimitDisplayTotalDelta]) [融券额度占用费] 
        FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable_Delta]
        where [RZRQCapitalAccountID]=@RZRQCapitalAccountID
        group by [RZRQCapitalAccountID]
        union all
        --信用账户资金表
        SELECT [RZRQCapitalAccountID],[Charge],[LateCharge],[RZLimitDisplay],[RQLimitDisplay] 
        FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable]
        where [RZRQCapitalAccountID]=@RZRQCapitalAccountID
    ) tempA,
   (
        SELECT * FROM [VTS_ReckoningCounter].dbo.[RZRQ_CapitalAccountTable]
        where [CapitalAccount]=@CapitalAccount
    ) tempF
   where tempA.RZRQCapitalAccountID=tempF.RZRQCapitalAccountID  
union all
SELECT tempA.CapitalAccount,tempA.融资利息+tempB.融券利息 [总利息] FROM 
    (SELECT [CapitalAccount],SUM([RZInterestSum]-[PayBackRZInterestSum]) [融资利息] FROM [VTS_ReckoningCounter].dbo.[RZRQ_RZLiabilities]
     where [CapitalAccount]=@CapitalAccount
     group by [CapitalAccount]) tempA,
    (SELECT [CapitalAccount],SUM([RQInterestSum]-[PayBackRQInterestSum]) [融券利息] FROM [VTS_ReckoningCounter].dbo.[RZRQ_RQLiabilities]
     where [CapitalAccount]=@CapitalAccount
     group by [CapitalAccount]) tempB
     where tempA.CapitalAccount=tempB.CapitalAccount
) tempM
group by CapitalAccount

print '8、总利息='+convert(varchar(20),@InterestMoney)

----------------------------------------------------------------------------------------
declare @FreezeNum int     --定义保证金冻结记录数量
--冻结中可用保证金
SELECT @FreezeMoney=isnull(SUM(FreezeAmount),0) FROM [VTS_ReckoningCounter].dbo.[RZRQ_MarginFreeze]
where [CapitalAccount]=@CapitalAccount
group by [CapitalAccount]

SELECT @FreezeNum=COUNT(*) FROM [VTS_ReckoningCounter].dbo.[RZRQ_MarginFreeze]
where [CapitalAccount]=@CapitalAccount

if(@FreezeNum=0)
  begin
    set @FreezeMoney=0
    print '9、冻结保证金=0----(没有任何保证金冻结记录)'
   end                                                                                                               
else
    print '9、 冻结保证金='+convert(varchar(20),@FreezeMoney)

declare @LastMoney decimal(20,3)
set @LastMoney=@CashMoney+@HoldMoney+@RZMoney+@RQMoney-@RQSumMoney-@RZLiabilitiesMoney-@RQLiabilitiesMoney-@InterestMoney-@FreezeMoney
print '--------------------------------------------------------------------------------'
print '10、 可用保证金余额='+convert(varchar(20),@LastMoney)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.sql.SQLSyntaxErrorException: ORA-00904: "NAME": 标识符无效是一个数据库错误。这个错误表示在SQL语句中使用的列名或表名无效。在Oracle数据库中,是区分大小写的,而小写的列名或表名会被自动转换为大写。因此,如果你在SQL语句中使用小写的"NAME"字段,它会被转换为大写,导致无法识别。为了解决这个问题,你需要修改SQL语句,确保使用的列名或表名与数据库中的实际命名一致。另外,还可以在使用SQL语句时显式地将列名或表名用双引号括起来,以确保不会被自动转换为大写。这样就能避免这个错误的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ojdbc报错java.sql.SQLSyntaxErrorException: ORA-00904: “NAME“: 标识符无效](https://blog.csdn.net/weixin_42424330/article/details/127385322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the ...](https://download.csdn.net/download/weixin_38717896/13685038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值