1
我在我的數據庫中有兩個表。其中一個具有郵政編碼位置的裝運數據,另一個表具有美國所有拉鍊的完整郵政編碼列表。我只是在下面列出了相關的專欄,以保持簡單。SQL Server的int轉換忽略子查詢?
表:郵編
- 郵編PK炭(5)
表:裝運
- ShipToZip VARCHAR(10)
- AMT十進制(10,2)
因此,一些貨件數據可能是非美國地址,而另一些可能包含美國郵政編碼(XXXXX-XXXX)的+4,這就是爲什麼貨件表最多爲10個。我需要做的就是導出查詢爲CSV,但我需要將郵政編碼轉換爲整數。
SELECT CAST(ShipToZIP AS INT) AS [target],SUM(cast(AMT as int)) AS [total]
FROM
(SELECT LEFT(ShiptoZip,5) ShipToZip,Amt
FROM Shipments
WHERE LEFT(SHIPTOZIP,5) IN (SELECT zipcode from ZipCodeLocations)
) Q
GROUP BY CAST(ShipToZIP AS INT)
但是,當我運行該查詢時,我不斷收到加拿大郵政編碼的轉換錯誤。如果我自己運行內部Q查詢,則每個記錄都是僅限美國的代碼。
如何強制子查詢先運行?我試圖通過this post使它成爲CTE,但它也沒有工作。
治療郵政編碼爲整數不僅是加拿大的代碼,而且美國郵政編碼已經領先0問題需要採取真的很難看這一要求,因爲它是如此困難。例如。將所有情況下,將int前導零零郵政編碼轉換爲5個字符串...爲什麼將郵政編碼視爲int?你不能用它做數學。 – 2014-12-06 17:27:21
那麼我需要它與文件和Excel之間的一些數據工作,煩人的是,無論我保存爲CSV時做什麼,總是刪除前導0。所以我試圖通過將其輸出爲整數來節省額外的步驟。 – ElPresidente 2014-12-06 17:55:05