2017-04-24 109 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