2017-04-24 14 views
0

INSERT INTOステートメントのAccess SQLコードを取得し、より組織化されたSQL Serverバージョンに変換しようとしていたときに、ランダムな質問がありました。以下はAccess SQLであり、最初のSELECT以外のすべてが指していることを知ることができます - "SELECT" Shipment "AS Type ...データを取得しているソースは表示されません。アクセスのデザインビュー。私は本当にだけなので、私は誰かが私の意図はここにあったものを解読することができます期待していますSQL Serverできました。ありがとうございました。INSERT INTO - Access SQL対SQL Server

'INSERT INTO [Fcst/Order/Ship Data] (Type, [Acct#], BU, Gender, Material, Description, [Size], [Year], Mth, Qty, BS) 
SELECT "Shipment" AS Type, [Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)].[BILL TO] AS [Acct#], dbo_vw_kd_BUSINESS_UNIT.BUSINESS_UNIT_DESC AS BU, dbo_vw_kd_GENDER.GENDER_DESC AS Gender, dbo_VW_INVOICES_SIZE.MATERIAL AS Material, dbo_vw_MM_MATERIAL.DESCRIPTION AS Description, dbo_VW_INVOICES_SIZE.SIZE_LITERAL, Year([requested_delivery_date]) AS [Year], Month([requested_delivery_date]) AS Mth, Sum(dbo_VW_INVOICES_SIZE.INVOICED_QUANTITY) AS Qty, dbo_vw_kd_BUSINESS_SEGMENT.BUSINESS_SEGMENT_DESC 
FROM ([Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)] INNER JOIN (dbo_VW_INVOICES_SIZE INNER JOIN ((dbo_vw_MM_MATERIAL INNER JOIN dbo_vw_kd_BUSINESS_UNIT ON dbo_vw_MM_MATERIAL.BUSINESS_UNIT_CODE = dbo_vw_kd_BUSINESS_UNIT.BUSINESS_UNIT_CODE) INNER JOIN dbo_vw_kd_GENDER ON dbo_vw_MM_MATERIAL.GENDER_CODE = dbo_vw_kd_GENDER.GENDER_CODE) ON dbo_VW_INVOICES_SIZE.MATERIAL = dbo_vw_MM_MATERIAL.MATERIAL) ON ([Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)].SIZE_INDEX = dbo_VW_INVOICES_SIZE.SIZE_LITERAL) AND ([Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)].BILLING_DOCUMENT_NUMBER = dbo_VW_INVOICES_SIZE.BILLING_DOCUMENT_NUMBER) AND ([Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)].BILLING_ITEM_NUMBER = dbo_VW_INVOICES_SIZE.BILLING_ITEM_NUMBER)) INNER JOIN dbo_vw_kd_BUSINESS_SEGMENT ON dbo_vw_MM_MATERIAL.BUSINESS_SEGMENT_CODE = dbo_vw_kd_BUSINESS_SEGMENT.BUSINESS_SEGMENT_CODE 
GROUP BY [Fcst v Order 03: Create Temp Invoice Tbl (Invoiced)].[BILL TO], dbo_vw_kd_BUSINESS_UNIT.BUSINESS_UNIT_DESC, dbo_vw_kd_GENDER.GENDER_DESC, dbo_VW_INVOICES_SIZE.MATERIAL, dbo_vw_MM_MATERIAL.DESCRIPTION, dbo_VW_INVOICES_SIZE.SIZE_LITERAL, Year([requested_delivery_date]), Month([requested_delivery_date]), dbo_vw_kd_BUSINESS_SEGMENT.BUSINESS_SEGMENT_DESC 
HAVING (((Year([requested_delivery_date]))=2017)); 

答えて

3

これは、すべての挿入されたレコードのため[Fcst/Order/Ship Data].Typeに入るだけの文字列定数です。

あなただけの単一引用符の代わりに二重引用符で、SQL Serverで同じことをするだろう。

編集:あなたは

INSERT INTO foo (type, bar) 
SELECT 'Hello World' AS type, bazbar 
FROM baz 

または多分それはのTransact-SQL(TYPEをCREATE)の予約語なので、[type]を使用するだろうSQL Serverでの

AS typeが本当に必要はないが、これは同じようにうまく動作します:

INSERT INTO foo (type, bar) 
SELECT 'Hello World', bazbar 
FROM baz 

列の別名は、SELECT一部別途

  • 自己文書化SQLをテスト

    • するのに便利ですコード(非自明な記述の場合)
  • +0

    これは意味があります。 SQL Serverでこれを達成するために、SELECTステートメントに 'Forecast' AS 'Typeを追加して、各行に追加する必要がありますか? – user3496218

    +0

    @ user3496218:編集を参照してください:) – Andre

    1

    あなたが話しているならg具体的にはちょうどSELECT "Shipment" as Typeについてですが、それに続くものではなく、追加するすべての行のType列に文字列リテラル "Shipment"を入れるだけです。

    参照:

    関連する問題