0

このクエリで構文エラーに直面している場所を教えてください...クエリには3つのテーブルが含まれており、すべてが左結合を使用して結合されています.Plzは解決策を提供します...

select a.ACNo as CLIENTACCOUNTNO,
b.CLIentSHoRTCoDE as CLIENTCODE,
a.Client as CLIENTNAME,
a.SECURITY_TYPE as  SECURITYTYPE,
c.SECMSECNO as  SCRIPCODE,
a.EXCE as  EXCH,
a.SEC_IDENT as  SECIDENT,
a.SECURITY_NAME as  SECURITYNAME,
a.INST_TYPE as  INSTTYPE,
a.SECURITY_CCY as  SECURITYCC,
a.SECURITY_PRICE as  SECURITYPRICE,
a.PRICE_DATE as  PRICEDATE,
a.LOCATION as  LOCATION,
a.LOCATION_STATUS as  LOCATIONSTATUS,
a.HOLDINGS as  HOLDINGS,
a.UNITS as  UNITS,
a.SALEABLE_STOCK as  SALEABLESTOCK,
a.FACE_VALUE as  FACEVALUE,
a.CCY_PORTFOLIO_VALUE as  CCYPORTFOLIOVALUE,
a.PORTFOLIO_VALUE_ININR as  PORTFOLIOVALUE,
a.MATURITY_DATE as  MATURITYDATE,
a.PREV_COUPON_DATE as  PREVCOUPONDATE,
a.NEXT_COUPON_DATE as  NEXTCOUPONDATE,
a.OPTION_DATE as OPTIONDATE,
a.DEADLINE_DATE as  DEADLINEDATE,
a.EVENT_TYPE as  EVENTTYPE
from CRS_BCP_Holding as a left join
AccountMaster as b on Cint(a.acno) =b.CashAcNo left join InstrumentMaster as c on
a.SEC_IDENT=c.ISIN and c.status<>'c' and c.bse_Code='b'
where ((a.OPTION_DATE between 8/04/2013 and 8/04/2013 ) and (a.LOCATION_STATUS='Surrendered for CA' OR a.EVENT_TYPE='PART'))
order by b.CLIentSHoRTCoDE,c.SECMSECNO,a.LOCATION,a.LOCATION_STATUS

スクリーンショット

このクエリは Access 2007 で使用されます

4

1 に答える 1

0

削除するas ain from CRS_BCP_Holding as a left join: (申し訳ありませんが、クエリを読み違えました。AS a問題ありませんが、以下でさらに説明する注意事項があります。)

(...)
FROM CRS_BCP_Holding AS a
     LEFT JOIN AccountMaster AS b
            ON CInt(a.acno) = b.CashAcNo
     LEFT JOIN InstrumentMaster as c
            ON (...)

また、本当に略語を使用する必要がある場合は、もう少し意味のある略語を使用します (「CRS_BCP_Holding」の場合は「cbh」、「AccountMaster」の場合は「am」など)。テーブルの b'、'c' は、列が何を参照しているかを読み取るのを非常に困難にします。

また、Santosh がコメントで述べているように、VBA はハッシュを使用して日付リテラルを指定します。

 WHERE ((a.OPTION_DATE BETWEEN #2013-04-08# and #2013-04-08#) ...)

(また、システムのロケールに関係なく、日付が正しく解釈されるように、ISO 標準の日付形式を使用して日付をフォーマットしました。私の (オランダの) マシンでは、2013 年 8 月 4 日は「2013 年 4 月 8 日」と解釈されます。 ; 米国のサーバーでは、「2013 年 8 月 4 日」と解釈されますが、2013-04-08 は明確です。

すべてをまとめると、次のようになりますか?

  SELECT a.acno AS clientaccountno
  ,      b.clientshortcode AS clientcode
  ,      a.client AS clientname
  ,      a.security_type AS securitytype
  ,      c.secmsecno AS scripcode
  ,      a.exce AS exch
  ,      a.sec_ident AS secident
  ,      a.security_name AS securityname
  ,      a.inst_type AS insttype
  ,      a.security_ccy AS securitycc
  ,      a.security_price AS securityprice
  ,      a.price_date AS pricedate
  ,      a.location AS location
  ,      a.location_status AS locationstatus
  ,      a.holdings AS holdings
  ,      a.units AS units
  ,      a.saleable_stock AS saleablestock
  ,      a.face_value AS facevalue
  ,      a.ccy_portfolio_value AS ccyportfoliovalue
  ,      a.portfolio_value_ininr AS portfoliovalue
  ,      a.maturity_date AS maturitydate
  ,      a.prev_coupon_date AS prevcoupondate
  ,      a.next_coupon_date AS nextcoupondate
  ,      a.option_date AS optiondate
  ,      a.deadline_date AS deadlinedate
  ,      a.event_type AS eventtype
    FROM crs_bcp_holding AS a 
         LEFT JOIN AccountMaster AS b 
                ON CInt(a.acno) = b.cashacno
         LEFT JOIN InstrumentMaster AS c
                ON a.sec_ident = c.isin
               AND c.status <> 'c'
               AND c.bse_Code = 'b'
   WHERE (a.option_date BETWEEN #2013-04-08# AND #2013-04-08#) 
     AND  (a.location_status = 'Surrendered for CA' OR a.event_type = 'PART')
ORDER BY b.clientshortcode
,        c.secmsecno
,        a.location
,        a.location_status
于 2013-04-08T09:32:42.187 に答える