我忙於在不同數據庫之間的SQL中使用UNION ALL。表達式類型數值對於分類無效
SELECT CostValue AS [COST OF SALES], Customer AS [CUSTOMER CODE], DocumentType AS [DOCUMENT TYPE], Invoice AS [INVOICE NO], InvoiceDate AS [INVOICE DATE],
DATEPART(dd, InvoiceDate) AS [INVOICE DAY], Mass AS MASS, NetSalesValue AS SALES, NetSalesValue - CostValue AS [GROSS PROFIT], OrderType,
QtyInvoiced AS QUANTITY, SalesOrder, StockCode AS [STOCK CODE], TrnMonth AS [FIN MONTH], TrnYear AS [FIN YEAR], TrnYear * 100 + TrnMonth AS YYYYMM,
'SHP' AS COMPANY
FROM SomeCompanyA.dbo.SalesDetail
WHERE (LineType = 1) AND (TrnYear >= 2010)
UNION ALL
SELECT CostValue AS [COST OF SALES], Customer AS [CUSTOMER CODE], DocumentType AS [DOCUMENT TYPE], Invoice AS [INVOICE NO], InvoiceDate AS [INVOICE DATE],
DATEPART(dd, InvoiceDate) AS [INVOICE DAY], Mass AS MASS, NetSalesValue AS SALES, NetSalesValue - CostValue AS [GROSS PROFIT], OrderType,
QtyInvoiced AS QUANTITY, SalesOrder, StockCode AS [STOCK CODE], TrnMonth AS [FIN MONTH], TrnYear COLLATE DATABASE_DEFAULT AS [FIN YEAR], (TrnYear * 100) COLLATE database_default + TrnMonth AS YYYYMM,
'SGF' AS COMPANY
FROM SQLXXXXXX.SomeCompanyB.dbo.SalesDetail AS SalesDetail_1
WHERE (LineType = 1) AND (TrnYear >= 2010)
我在執行時收到以下錯誤「表達式類型的數字是COLLATE子句無效」我認爲這是從這裏(TrnYear * 100)COLLATE database_default + TrnMonth AS YYYYMM
我不來了肯定還有其他什麼來分解這個,因爲我理解這是一個連接而不是一個隱式轉換。
請有人提供一些建議,如何正確施放此。
我也看過這裏Use Collate in CONCAT,但我不明白這是如何工作的,因爲我在一年中使用操作員。
也許我錯過了一些東西。任何意見,將不勝感激。
由於
改爲使用:'CAST(TrnYear * 100 AS VARCHAR(100))+ TrnMonth AS YYYYMM' – lad2025
@ lad2025感謝此。正如我在下面提到的那樣,我得到了像這樣轉換的算術溢出錯誤。我將搜索論壇的這個錯誤。歡迎任何建議。謝謝 – Metamorphosis