2017-04-24 64 views
0

我有一個隨機問題,當我試圖爲INSERT INTO語句獲取Access SQL代碼並轉換爲更有組織的SQL Server版本時,出現了這個問題。下面是Access的SQL,我可以告訴除了第一個SELECT - 「SELECT」Shipment「AS Type ...之外的所有東西都指向了什麼?我沒有看到它從中提取數據的任何源,並且它被稱爲表達式訪問的設計圖,我真的只是在SQL Server的工作,所以我希望有人能幫助我破譯意圖是在這裏。謝謝。INSERT INTO - 訪問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中,只需用單引號代替雙引號。

編輯:

在SQL Server中,你會做

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

或者是使用[type],因爲這是在Transact-SQL(CREATE TYPE)保留字。

AS type是不是真的需要,這將很好的工作:

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

列別名是有用的

  • 測試SELECT部分​​分別
  • 自我記錄的SQL代碼(用於非平凡的陳述)
+0

現在有道理 - 謝謝噸。至於在SQL Server中實現這一點,我是否只需在SELECT語句中添加'Forecast'AS'類型以便將其添加到每行中? – user3496218

+0

@ user3496218:看編輯:) – Andre