Sql ND, myFixVarInd=案例 当Security.float_rate='Y' 然后“V” 否则“F” 完,, Myintincome=病例 当(currhold.t_accr_intrst_c+currhold.Gchange_amz_c)>0时

Sql ND, myFixVarInd=案例 当Security.float_rate='Y' 然后“V” 否则“F” 完,, Myintincome=病例 当(currhold.t_accr_intrst_c+currhold.Gchange_amz_c)>0时,sql,sql-server,sql-server-2005,sql-server-2012,outer-join,Sql,Sql Server,Sql Server 2005,Sql Server 2012,Outer Join,ND, myFixVarInd=案例 当Security.float_rate='Y' 然后“V” 否则“F” 完,, Myintincome=病例 当(currhold.t_accr_intrst_c+currhold.Gchange_amz_c)>0时 然后“我” 否则“ 完,, 将(VARCHAR(12),currhold.gTrade_Date,112)转换为RB_VALDATE, 将(VARCHAR(12),currhold.maturity\u date,112)转换为到期日, 将(

ND, myFixVarInd=案例 当Security.float_rate='Y' 然后“V” 否则“F” 完,, Myintincome=病例 当(currhold.t_accr_intrst_c+currhold.Gchange_amz_c)>0时 然后“我” 否则“ 完,, 将(VARCHAR(12),currhold.gTrade_Date,112)转换为RB_VALDATE, 将(VARCHAR(12),currhold.maturity\u date,112)转换为到期日, 将(VARCHAR(12),currhold.gTrade_日期,112)转换为RB_交易日期, 将([security].sec_类型,,'')替换为产品, [担保]。担保人作为到岸价编号, myTradeType=案例 当currhold.Portfolio='Abs' 然后是“交易” 其他“销售” 完,, 打开_Flag='Y', 将(VARCHAR(12),currhold.GSETTLE_日期,112)转换为GSETTLE_日期, currhold.t\u数量\u c作为数量, 内部比率=案例 当ltrim(rtrim(currhold.sec_组))为“短期”时 然后是currhold.息票利率-(security.Index\u Rate\u Add/100) ELSE security.息票率-(security.Index\u Rate\u Add/100) 完,, security.Index\u Rate\u Add, 将(VARCHAR(12),security.Next\u PMT\u Date,112)转换为Next\u PMT\u Date, 地位, 货币账户, SECURITY.FLOAT_FREQ, “源”作为源代码, 将(VARCHAR(12),@System_Date,112)转换为System_Date, #经纪商, 证券发行人, 将(十进制(20,8),当前持有的gorig_价格)转换为原始价格, isnull(portfoli.MGR2_标题“”)作为OBU, isnull(#tmpISB.Issuer_ISB,'')作为发行人_ISB, 安全。作者, isnull(转换(VARCHAR(12),#pricetemp.Max_Price_Date,112),转换(VARCHAR(12),@System_Date,112))为Max_Price_Date, Security.Symb_池, isnull(将(VARCHAR(12),Currhold.Issue_日期,112),“”)转换为Issue_日期, isnull(CONVERT(VARCHAR(12),Security.Last_-pmt_-date,112),CONVERT(VARCHAR(12),@System_-date,112))作为Last_-pmt_-date, 安全、权责发生制, isnull(将(VARCHAR(12),Security.Last\u float\u Date,112),“”)转换为Last\u float\u Date, isnull(将(VARCHAR(12),Security.Next\u Float\u Date,112),“”)转换为Next\u Float\u Date, 作为担保人的isnull([security]。担保人“”), isnull(将(VARCHAR(12),Currhold.Maturity,112),“”)转换为最后一次优先付款, 安全,国家, isnull(currenhold.ANT_HEDGE“”)作为ANT_HEDGE, 作为代理ISB的isnull(Broker.User_desc1“”), isnull(#tmpISB.assurant_ISB,'')作为担保人_ISB 来自securtyp, 查塔克, 安全 portfoli, #factortemp, #pricetemp, 柯尔霍尔德, #tmp_transac, 发行人, #Transact-EMP, 经纪人, #tmpISB 其中#tmpISB.cusip=security.cusip 和#transactitemp.broker=broker.broker AND security.cusip=#transact-emp.cusip 和#transactitemp.current_hold_uu001=currhold.current_hold_u001 和#transactitemp.cusip=currhold.cusip 和currhold.current_hold_uu001*=#tmp_transac.current_hold_u001 和((abs(t_数量_c)>0.01 和35; tmp_transac.current_hold_001为空) 或35; tmp_transac.current_hold_001不为空) 和portfoli.account=currhold.account portfoli.portfolio=currhold.portfolio 并且securtyp.sec_type=currhold.sec_type AND security.cusip=currhold.cusip 和currhold.account=chartacc.account currhold.portfolio=chartacc.portfolio 和currhold.sec_组=chartacc.sec_组 而currhold.sec_type=chartacc.sec_type 和currhold.保管人=chartacc.保管人 和currhold.cusip*=#factortemp.cusip 和currhold.cusip*=#pricetemp.cusip AND security.issuer=issuer.issuer 和CURRHOLD.PORTFOLIO不在(选择PORTFOLIO 来自ut\u公文包\u例外 其中proc_name='SKY')
These 2 lines in question in WHERE CLAUSE BELOW
currhold.current_hold__001 *= #tmp_transac.current_hold__001 and
((abs(t_quantity_c)> 0.01 and #tmp_transac.current_hold__001 is null) or
SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[usp_getEPMData_GFS]
AS
  BEGIN
      SET NOCOUNT ON;

      IF OBJECT_ID('tempdb..#factortemp', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #factortemp
        END

      IF OBJECT_ID('tempdb..#transactemp', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #transactemp
        END

      SELECT *
      INTO   #transactemp
      FROM   transac
      WHERE  tran_type IN ( 'BUY', 'SHORT' )

      SELECT curr_factor,
             cusip
      INTO   #factortemp
      FROM   mbs_fact A
      WHERE  A.factor_date = (SELECT max(B.factor_date)
                              FROM   mbs_fact B
                              WHERE  B.cusip = A.cusip --and B.factor_date <= '10/30/2008'
                              GROUP  BY B.cusip)

      IF OBJECT_ID('tempdb..#pricetemp', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #pricetemp
        END

      CREATE TABLE #pricetemp
        (
           price          NUMERIC(19, 8),
           cusip          VARCHAR(20),
           price_source   VARCHAR(20),
           Max_Price_Date SMALLDATETIME
        )

      IF OBJECT_ID('tempdb..#pricetemp1', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #pricetemp1
        END

      IF OBJECT_ID('tempdb..#pricetemp2', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #pricetemp2
        END

      SELECT cusip,
             max(price_date) AS MX_pxdate
      INTO   #pricetemp1
      FROM   pricing
      GROUP  BY cusip
      ORDER  BY 1

      SELECT A.cusip,
             B.Mx_pxdate,
             count(*) AS dupcount
      INTO   #pricetemp2
      FROM   pricing A,
             #pricetemp1 B
      WHERE  A.cusip = B.cusip
             AND A.price_date = B.MX_pxdate
      GROUP  BY A.cusip,
                B.Mx_pxdate

      INSERT INTO #pricetemp
      SELECT A.price,
             A.cusip,
             A.price_source,
             B.MX_pxdate
      FROM   pricing A,
             #pricetemp2 B
      WHERE  A.price_date = B.MX_pxdate
             AND A.cusip = B.cusip
             AND B.dupcount = 1

      INSERT INTO #pricetemp
      SELECT A.price,
             A.cusip,
             A.price_source,
             B.MX_pxdate
      FROM   pricing A,
             #pricetemp2 B
      WHERE  A.price_date = B.MX_pxdate
             AND A.cusip = B.cusip
             AND A.price_source = 'MANUAL'
             AND B.dupcount = 2

      IF OBJECT_ID('tempdb..#tmp_transac', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #tmp_transac
        END

      SELECT DISTINCT current_hold__001,
                      sum(abs(transac.total_amount)) AS total_amount,
                      broker
      INTO   #tmp_transac
      FROM   transac
      WHERE  setl_y_n = 'N'
             AND replace(tran_type, ' ', '') IN (SELECT DISTINCT replace(tran_type, ' ', '') AS tran_type
                                                 FROM   ut_transac_types
                                                 WHERE  amount_sign = 'POSITIVE')
      GROUP  BY current_hold__001,
                broker

      DECLARE @System_Date SMALLDATETIME

      SELECT @System_Date = CONVERT(VARCHAR(12), dbo.uf_getGLDate(), 112)

      --ISB
      IF OBJECT_ID('tempdb..#tmpISB', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #tmpISB
        END

      SELECT DISTINCT iss.user_desc1       AS Issuer_ISB,
                      Guarantor.user_desc1 AS Guarantor_ISB,
                      Security.Cusip
      INTO   #tmpISB
      FROM   Security
             LEFT OUTER JOIN Issuer Iss
               ON ( Security.issuer = Iss.issuer )
             LEFT OUTER JOIN Issuer Guarantor
               ON ( Security.Guarantor = Guarantor.issuer )

      --
      -----Existing EPM on Top
      SELECT CASE
               WHEN #factortemp.curr_factor = 0.00
                 THEN 0.00
               WHEN #factortemp.curr_factor IS NULL
                 THEN 0.00
               ELSE #factortemp.curr_factor
             END                                                                                                   AS curr_factor,
             CASE
               WHEN #pricetemp.price = 0.00
                 THEN 100.000000000
               WHEN #pricetemp.price IS NULL
                 THEN 100.000000000
               ELSE #pricetemp.price
             END                                                                                                   AS price,
             replace(security.description1, ',', ' ')                                                              AS description1,
             security.isin,
             portfoli.MGR1_TITLE                                                                                   AS branch,
             currhold.portfolio,
             replace(currhold.sec_type, ' ', '')                                                                   AS sec_type,
             CONVERT(FLOAT, currhold.CURRENT_HOLD__001) * 10000                                                    AS Trade_num,
             currhold.cusip,
             securtyp.prn_curr,
             Chartacc.securities,
             securitiesamt=CASE
                             WHEN SECURTYP.SEC_TYPE = 'RESIDCERT'
                               THEN CONVERT(DECIMAL(18, 2), CURRHOLD.GORIG_COST_C)
                             ELSE CONVERT(DECIMAL(18, 2), CURRHOLD.T_QUANTITY_C)
                           END,
             chartacc.INT_DUE_ACCRUED,
             INT_DUE_ACCRUEDAmt = ( CURRHOLD.T_ACCR_INTRST_C + CURRHOLD.T_INT_DIV_DUE_C ),
             chartacc.Discount,
             DiscountAmt = CASE
                             WHEN SECURTYP.SEC_TYPE = 'RESIDCERT'
                               THEN 0
                             WHEN ( CURRHOLD.GBOOK_VALUE_C - CURRHOLD.T_QUANTITY_C ) > 0
                               THEN 0
                             ELSE CONVERT(DECIMAL(18, 2), CURRHOLD.GBOOK_VALUE_C - CURRHOLD.T_QUANTITY_C)
                           END,
             chartacc.Premium,
             PREMIUMAmt=CASE
                          WHEN SECURTYP.SEC_TYPE = 'RESIDCERT'
                            THEN 0
                          WHEN ( CURRHOLD.GBOOK_VALUE_C - CURRHOLD.T_QUANTITY_C ) < 0
                            THEN 0
                          ELSE CONVERT(DECIMAL(18, 2), CURRHOLD.GBOOK_VALUE_C - CURRHOLD.T_QUANTITY_C)
                        END,
             chartacc.UNRLZD_GL_ASSET,
             UNRLZD_GL_ASSETAmt=isnull(CONVERT(DECIMAL(18, 2), ( CURRHOLD.GMARKET_VALUE_C - CURRHOLD.GBOOK_VALUE_C )), 0),
             chartacc.UNRLZD_GL_INC,
             UNRLZD_GL_INCAmt = isnull(CONVERT(DECIMAL(18, 2), ( CURRHOLD.GBOOK_VALUE_C - CURRHOLD.GMARKET_VALUE_C )), 0),
             chartacc.INTEREST_INCOME,
             Interest_incomeamt= CONVERT(DECIMAL(18, 2), CURRHOLD.GAMZ_YTD_P + CURRHOLD.T_ID_EARN_YTD_P),
             chartacc.RECVABLE_BROKER,
             RECVABLE_BROKERAmt= CASE
                                   WHEN CURRHOLD.STATUS IN ( 'SELL', 'SELL TBA' )
                                        AND ( CURRHOLD.GSETTLE_DATE ) >= dbo.uf_getGLDate()
                                     THEN isnull(( CURRHOLD.GORIG_COST_C ) - ( CURRHOLD.T_DUE_ACCR_CY_C ), 0)
                                   ELSE isnull(#tmp_transac.total_amount, 0) -- - isnull(seccash.prin_amount, 0)
                                 END,
             chartacc.PAYABLE_BROKER,
             PAYABLE_BROKERAmt= CASE
                                  WHEN CURRHOLD.STATUS IN ( 'BUY', 'BUY TBA' )
                                       AND ( CURRHOLD.GSETTLE_DATE ) >= dbo.uf_getGLDate()
                                    THEN isnull(-( CURRHOLD.GORIG_COST_C ) - ( CURRHOLD.T_DUE_ACCR_CY_C ), 0)
                                  ELSE 0
                                END,
             CurrStatus=CASE
                          WHEN currhold.status IN ( 'BUY', 'SELL' )
                               AND currhold.closed_date > dbo.uf_getGLDate()
                               AND currhold.T_QUANTITY_C <> 0
                            THEN 1
                          WHEN currhold.status IN ( 'BUY', 'SELL' )
                               AND currhold.gsettle_date > dbo.uf_getGLDate()
                               AND currhold.T_QUANTITY_C <> 0
                            THEN 3
                          ELSE 2
                        END,
             myPrincBalAL= CASE
                             WHEN currhold.T_QUANTITY_C > 0
                               THEN 'A'
                             ELSE 'L'
                           END,
             myAccruedAmtAL= CASE
                               WHEN currhold.t_accr_intrst_c + currhold.t_int_div_due_c > 0
                                 THEN 'A'
                               ELSE 'L'
                             END,
             myUnearnedpremAL= CASE
                                 WHEN ( currhold.T_QUANTITY_C - currhold.GBOOK_VALUE_C ) < 0
                                   THEN 'A'
                                 ELSE 'L'
                               END,
             myUnearnedDiscAL = CASE
                                  WHEN ( currhold.T_QUANTITY_C - currhold.GBOOK_VALUE_C ) < 0
                                    THEN ''
                                  ELSE 'L'
                                END,
             myUnrealProfitAL= CASE
                                 WHEN currhold.Gunrl_gl_ytd_c > 0
                                   THEN 'A'
                                 ELSE 'L'
                               END,
             myUnrealLossAL = CASE
                                WHEN currhold.Gunrl_gl_ytd_c > 0
                                  THEN ''
                                ELSE 'L'
                              END,
             myCouponRate = CASE
                              WHEN ltrim(rtrim(currhold.sec_group)) = 'SHORT TERM'
                                THEN CONVERT(DECIMAL(20, 7), currhold.COUPON_RATE / 100)
                              ELSE CONVERT(DECIMAL(20, 7), security.COUPON_RATE / 100)
                            END,
             myFixRate = CASE
                           WHEN [security].Float_Rate = 'Y'
                             THEN CONVERT(DECIMAL(20, 7), [security].index_rate_add / 100)
                           ELSE
                             CASE
                               WHEN ltrim(rtrim(currhold.sec_group)) = 'SHORT TERM'
                                 THEN CONVERT(DECIMAL(20, 7), currhold.COUPON_RATE / 100)
                               ELSE CONVERT(DECIMAL(20, 7), security.COUPON_RATE / 100)
                             END
                         END,
             myFixVarInd=CASE
                           WHEN Security.float_rate = 'Y'
                             THEN 'V'
                           ELSE 'F'
                         END,
             myIntIncomeAL = CASE
                               WHEN ( currhold.t_accr_intrst_c + currhold.Gchange_amz_c ) > 0
                                 THEN 'I'
                               ELSE ''
                             END,
             CONVERT(VARCHAR(12), currhold.gTrade_Date, 112)                                                       AS RB_VALDATE,
             CONVERT(VARCHAR(12), currhold.maturity_date, 112)                                                     AS Maturity_date,
             CONVERT(VARCHAR(12), currhold.gTrade_Date, 112)                                                       AS RB_TRADEDATE,
             Replace([security].sec_type, ' ', '')                                                                 AS Product,
             [security].guarantor                                                                                  AS CIF_No,
             myTradeType = CASE
                             WHEN currhold.Portfolio = 'ABST'
                               THEN 'TRADING'
                             ELSE 'SALE'
                           END,
             Open_Flag='Y',
             CONVERT(VARCHAR(12), currhold.GSETTLE_DATE, 112)                                                      AS GSETTLE_DATE,
             currhold.t_quantity_c                                                                                 AS Quantity,
             INT_RATE= CASE
                         WHEN ltrim(rtrim(currhold.sec_group)) = 'SHORT TERM'
                           THEN currhold.Coupon_Rate - ( security.Index_Rate_Add / 100 )
                         ELSE security.Coupon_Rate - ( security.Index_Rate_Add / 100 )
                       END,
             security.Index_Rate_Add,
             CONVERT(VARCHAR(12), security.Next_PMT_Date, 112)                                                     AS Next_PMT_Date,
             currhold.status,
             currhold.account,
             SECURITY.FLOAT_FREQ,
             'SOURCE'                                                                                              AS Source_Code,
             CONVERT(VARCHAR(12), @System_Date, 112)                                                               AS System_Date,
             #transactemp.broker,
             security.issuer,
             CONVERT(DECIMAL(20, 8), currhold.gorig_price)                                                         AS Orig_Price,
             isnull(portfoli.MGR2_TITLE, '')                                                                       AS OBU,
             isnull(#tmpISB.Issuer_ISB, '')                                                                        AS Issuer_ISB,
             Security.Author,
             isnull(CONVERT(VARCHAR(12), #pricetemp.Max_Price_Date, 112), CONVERT(VARCHAR(12), @System_Date, 112)) AS Max_Price_Date,
             Security.Symb_pool,
             isnull(CONVERT(VARCHAR(12), Currhold.Issue_Date, 112), '')                                            AS Issue_Date,
             isnull(CONVERT(VARCHAR(12), Security.Last_pmt_date, 112), CONVERT(VARCHAR(12), @System_Date, 112))    AS Last_pmt_date,
             Security.Accrual,
             isnull(CONVERT(VARCHAR(12), Security.Last_float_Date, 112), '')                                       AS Last_float_date,
             isnull(CONVERT(VARCHAR(12), Security.Next_Float_Date, 112), '')                                       AS Next_float_date,
             isnull([security].guarantor, '')                                                                      AS guarantor,
             isnull(CONVERT(VARCHAR(12), Currhold.Maturity_date, 112), '')                                         AS LAST_PRIN_PMT,
             Security.Country,
             isnull(currhold.ANT_HEDGE, '')                                                                        AS ANT_HEDGE,
             isnull(Broker.User_desc1, '')                                                                         AS Broker_ISB,
             isnull(#tmpISB.Guarantor_ISB, '')                                                                     AS Guarantor_ISB
      FROM   securtyp,
             chartacc,
             security,
             portfoli,
             #factortemp,
             #pricetemp,
             currhold,
             #tmp_transac,
             issuer,
             #transactemp,
             broker,
             #tmpISB
      WHERE  #tmpISB.cusip = security.cusip
             AND #transactemp.broker = broker.broker
             AND security.cusip = #transactemp.cusip
             AND #transactemp.current_hold__001 = currhold.current_hold__001
             AND #transactemp.cusip = currhold.cusip
             AND currhold.current_hold__001 *= #tmp_transac.current_hold__001
             AND ( ( abs(t_quantity_c) > 0.01
                     AND #tmp_transac.current_hold__001 IS NULL )
                    OR #tmp_transac.current_hold__001 IS NOT NULL )
             AND portfoli.account = currhold.Account
             AND portfoli.portfolio = currhold.Portfolio
             AND securtyp.sec_type = currhold.sec_type
             AND security.cusip = currhold.cusip
             AND currhold.account = chartacc.account
             AND currhold.portfolio = chartacc.portfolio
             AND currhold.sec_group = chartacc.sec_group
             AND currhold.sec_type = chartacc.sec_type
             AND currhold.custodian = chartacc.custodian
             AND currhold.cusip *=# factortemp.cusip
             AND currhold.cusip *=# pricetemp.cusip
             AND security.issuer = issuer.issuer
             AND CURRHOLD.PORTFOLIO NOT IN (SELECT portfolio
                                            FROM   ut_portfolio_exception
                                            WHERE  proc_name = 'SKY')
             AND abs(CURRHOLD.T_QUANTITY_C) > 0.01
             AND currhold.account NOT IN ( 'SEC PUR', 'SEC SOLD', 'RABO SEC', 'GOSMORE' )
  END 
select * 
from dbo.x9,dbo.sometables2
where dbo.x9.x1 *=   dbo.sometables2.x1 
select *   
from dbo.x9 left join dbo.sometables2
on  dbo.x9.x1 =   dbo.sometables2.x1