MSSQL UNION var 类型不匹配
MSSQL UNION var types mismatch
之前提出的问题,我相信我做了所有必要的转换,但我收到错误:Error converting data type nvarchar to float
。错误消息引用 SnapperMusic_Winman
- View1
视图 1:
SELECT Products.ProductId AS Product, Products.ProductDescription AS Description, CONVERT(datetime, PurchaseOrders.EffectiveDate) AS OrderDate,
Suppliers.SupplierId AS SupplierAcc, Suppliers.SupplierName, CONVERT(datetime, Inventory.EffectiveDate) AS BookedDate, CONVERT(float, Inventory.Quantity)
AS Quantity, CONVERT(float, Inventory.TotalValue) AS TotalValue, Locations.LocationId AS Location, PurchaseOrders.PurchaseOrderId AS PONumber,
GoodsReceipts.GoodsReceiptId AS GoodsReference
FROM SnapperMusic_Winman.dbo.GoodsReceipts AS GoodsReceipts INNER JOIN
SnapperMusic_Winman.dbo.Inventory AS Inventory ON GoodsReceipts.GoodsReceipt = Inventory.GoodsReceipt INNER JOIN
SnapperMusic_Winman.dbo.Suppliers AS Suppliers ON GoodsReceipts.Supplier = Suppliers.Supplier INNER JOIN
SnapperMusic_Winman.dbo.Products AS Products ON Inventory.Product = Products.Product INNER JOIN
SnapperMusic_Winman.dbo.Locations AS Locations ON Inventory.Location = Locations.Location INNER JOIN
SnapperMusic_Winman.dbo.PurchaseOrderItems AS PurchaseOrderItems ON Inventory.PurchaseOrderItem = PurchaseOrderItems.PurchaseOrderItem INNER JOIN
SnapperMusic_Winman.dbo.PurchaseOrders AS PurchaseOrders ON PurchaseOrderItems.PurchaseOrder = PurchaseOrders.PurchaseOrder
视图 2:
SELECT GoodsReceipts.ItemCode AS Product, dbo.StockItem.Name AS Description, CONVERT(datetime, dbo.POPOrderReturn.DocumentDate) AS OrderDate,
dbo.PLSupplierAccount.SupplierAccountNumber AS SupplierAcc, dbo.PLSupplierAccount.SupplierAccountName AS SupplierName, CONVERT(datetime,
dbo.POPReceiptReturnLine.DateTimeCreated) AS BookedDate, CONVERT(float, dbo.POPReceiptReturnLine.ReceiptReturnQuantity) AS Quantity, CONVERT(float,
GoodsReceipts.UnitBuyingPrice * dbo.POPReceiptReturnLine.ReceiptReturnQuantity) AS TotalValue, dbo.Warehouse.Name AS Location,
dbo.POPOrderReturn.DocumentNo AS PONumber, dbo.POPInvoiceCreditLine.POPInvoiceCreditNo AS GoodsReference
FROM dbo.POPOrderReturnLine AS GoodsReceipts INNER JOIN
dbo.POPReceiptReturnLine ON GoodsReceipts.POPOrderReturnLineID = dbo.POPReceiptReturnLine.POPOrderReturnLineID INNER JOIN
dbo.POPOrderReturn ON GoodsReceipts.POPOrderReturnID = dbo.POPOrderReturn.POPOrderReturnID INNER JOIN
dbo.PLSupplierAccount ON dbo.POPOrderReturn.SupplierID = dbo.PLSupplierAccount.PLSupplierAccountID INNER JOIN
dbo.Warehouse ON dbo.POPOrderReturn.WarehouseID = dbo.Warehouse.WarehouseID INNER JOIN
dbo.POPInvoiceCreditLine ON GoodsReceipts.POPOrderReturnLineID = dbo.POPInvoiceCreditLine.POPOrderReturnLineID INNER JOIN
dbo.StockItem ON GoodsReceipts.ItemCode = dbo.StockItem.Code
联盟:
SELECT dbo.Elen_GoodsInReceived_Winman.Product, dbo.Elen_GoodsInReceived_Winman.Description, dbo.Elen_GoodsInReceived_Winman.OrderDate,
dbo.Elen_GoodsInReceived_Winman.SupplierAcc, dbo.Elen_GoodsInReceived_Winman.SupplierName, dbo.Elen_GoodsInReceived_Winman.BookedDate,
dbo.Elen_GoodsInReceived_Winman.Quantity, dbo.Elen_GoodsInReceived_Winman.Location, dbo.Elen_GoodsInReceived_Winman.TotalValue,
dbo.Elen_GoodsInReceived_Winman.PONumber, dbo.Elen_GoodsInReceived_Winman.GoodsReference
FROM dbo.Elen_GoodsInReceived_Winman
UNION
SELECT dbo.Elen_GoodsInReceived_Sage.Product, dbo.Elen_GoodsInReceived_Sage.Description, dbo.Elen_GoodsInReceived_Sage.OrderDate,
dbo.Elen_GoodsInReceived_Sage.SupplierAcc , dbo.Elen_GoodsInReceived_Sage.SupplierName,
dbo.Elen_GoodsInReceived_Sage.BookedDate, dbo.Elen_GoodsInReceived_Sage.Quantity,
dbo.Elen_GoodsInReceived_Sage.TotalValue, dbo.Elen_GoodsInReceived_Sage.Location,
dbo.Elen_GoodsInReceived_Sage.PONumber, dbo.Elen_GoodsInReceived_Sage.GoodsReference
FROM dbo.Elen_GoodsInReceived_Sage
除了已转换的字段外,其他所有字段都是 VARCHAR
。
不用说,他们单独工作很好..
谁能指出我遗漏了什么?
select
语句中的 order
列在一处有误。
在view1
中是
dbo.Elen_GoodsInReceived_Winman.Location,
dbo.Elen_GoodsInReceived_Winman.TotalValue,
在view2
是
dbo.Elen_GoodsInReceived_Sage.TotalValue,
dbo.Elen_GoodsInReceived_Sage.Location,
更改此顺序以使其合适。
之前提出的问题,我相信我做了所有必要的转换,但我收到错误:Error converting data type nvarchar to float
。错误消息引用 SnapperMusic_Winman
- View1
视图 1:
SELECT Products.ProductId AS Product, Products.ProductDescription AS Description, CONVERT(datetime, PurchaseOrders.EffectiveDate) AS OrderDate,
Suppliers.SupplierId AS SupplierAcc, Suppliers.SupplierName, CONVERT(datetime, Inventory.EffectiveDate) AS BookedDate, CONVERT(float, Inventory.Quantity)
AS Quantity, CONVERT(float, Inventory.TotalValue) AS TotalValue, Locations.LocationId AS Location, PurchaseOrders.PurchaseOrderId AS PONumber,
GoodsReceipts.GoodsReceiptId AS GoodsReference
FROM SnapperMusic_Winman.dbo.GoodsReceipts AS GoodsReceipts INNER JOIN
SnapperMusic_Winman.dbo.Inventory AS Inventory ON GoodsReceipts.GoodsReceipt = Inventory.GoodsReceipt INNER JOIN
SnapperMusic_Winman.dbo.Suppliers AS Suppliers ON GoodsReceipts.Supplier = Suppliers.Supplier INNER JOIN
SnapperMusic_Winman.dbo.Products AS Products ON Inventory.Product = Products.Product INNER JOIN
SnapperMusic_Winman.dbo.Locations AS Locations ON Inventory.Location = Locations.Location INNER JOIN
SnapperMusic_Winman.dbo.PurchaseOrderItems AS PurchaseOrderItems ON Inventory.PurchaseOrderItem = PurchaseOrderItems.PurchaseOrderItem INNER JOIN
SnapperMusic_Winman.dbo.PurchaseOrders AS PurchaseOrders ON PurchaseOrderItems.PurchaseOrder = PurchaseOrders.PurchaseOrder
视图 2:
SELECT GoodsReceipts.ItemCode AS Product, dbo.StockItem.Name AS Description, CONVERT(datetime, dbo.POPOrderReturn.DocumentDate) AS OrderDate,
dbo.PLSupplierAccount.SupplierAccountNumber AS SupplierAcc, dbo.PLSupplierAccount.SupplierAccountName AS SupplierName, CONVERT(datetime,
dbo.POPReceiptReturnLine.DateTimeCreated) AS BookedDate, CONVERT(float, dbo.POPReceiptReturnLine.ReceiptReturnQuantity) AS Quantity, CONVERT(float,
GoodsReceipts.UnitBuyingPrice * dbo.POPReceiptReturnLine.ReceiptReturnQuantity) AS TotalValue, dbo.Warehouse.Name AS Location,
dbo.POPOrderReturn.DocumentNo AS PONumber, dbo.POPInvoiceCreditLine.POPInvoiceCreditNo AS GoodsReference
FROM dbo.POPOrderReturnLine AS GoodsReceipts INNER JOIN
dbo.POPReceiptReturnLine ON GoodsReceipts.POPOrderReturnLineID = dbo.POPReceiptReturnLine.POPOrderReturnLineID INNER JOIN
dbo.POPOrderReturn ON GoodsReceipts.POPOrderReturnID = dbo.POPOrderReturn.POPOrderReturnID INNER JOIN
dbo.PLSupplierAccount ON dbo.POPOrderReturn.SupplierID = dbo.PLSupplierAccount.PLSupplierAccountID INNER JOIN
dbo.Warehouse ON dbo.POPOrderReturn.WarehouseID = dbo.Warehouse.WarehouseID INNER JOIN
dbo.POPInvoiceCreditLine ON GoodsReceipts.POPOrderReturnLineID = dbo.POPInvoiceCreditLine.POPOrderReturnLineID INNER JOIN
dbo.StockItem ON GoodsReceipts.ItemCode = dbo.StockItem.Code
联盟:
SELECT dbo.Elen_GoodsInReceived_Winman.Product, dbo.Elen_GoodsInReceived_Winman.Description, dbo.Elen_GoodsInReceived_Winman.OrderDate,
dbo.Elen_GoodsInReceived_Winman.SupplierAcc, dbo.Elen_GoodsInReceived_Winman.SupplierName, dbo.Elen_GoodsInReceived_Winman.BookedDate,
dbo.Elen_GoodsInReceived_Winman.Quantity, dbo.Elen_GoodsInReceived_Winman.Location, dbo.Elen_GoodsInReceived_Winman.TotalValue,
dbo.Elen_GoodsInReceived_Winman.PONumber, dbo.Elen_GoodsInReceived_Winman.GoodsReference
FROM dbo.Elen_GoodsInReceived_Winman
UNION
SELECT dbo.Elen_GoodsInReceived_Sage.Product, dbo.Elen_GoodsInReceived_Sage.Description, dbo.Elen_GoodsInReceived_Sage.OrderDate,
dbo.Elen_GoodsInReceived_Sage.SupplierAcc , dbo.Elen_GoodsInReceived_Sage.SupplierName,
dbo.Elen_GoodsInReceived_Sage.BookedDate, dbo.Elen_GoodsInReceived_Sage.Quantity,
dbo.Elen_GoodsInReceived_Sage.TotalValue, dbo.Elen_GoodsInReceived_Sage.Location,
dbo.Elen_GoodsInReceived_Sage.PONumber, dbo.Elen_GoodsInReceived_Sage.GoodsReference
FROM dbo.Elen_GoodsInReceived_Sage
除了已转换的字段外,其他所有字段都是 VARCHAR
。
不用说,他们单独工作很好..
谁能指出我遗漏了什么?
select
语句中的 order
列在一处有误。
在view1
中是
dbo.Elen_GoodsInReceived_Winman.Location,
dbo.Elen_GoodsInReceived_Winman.TotalValue,
在view2
是
dbo.Elen_GoodsInReceived_Sage.TotalValue,
dbo.Elen_GoodsInReceived_Sage.Location,
更改此顺序以使其合适。