2017-04-24 82 views
1

我試圖運行以下查詢,從示例數據庫中的客戶記錄生成JSON字符串。SQL FOR JSON轉換問題

SELECT 
    CustomerID, 
    CustomerName, 
    PersonID AS [CustomerContact.PersonID], 
    SUBSTRING(FullName, 0, CHARINDEX(' ', FullName)) AS [CustomerContact.FirstName], 
    SUBSTRING(FullName, CHARINDEX(' ', FullName) + 1, LEN(FullName)) AS [CustomerContact.LastName], 
    EmailAddress AS [CustomerContact.Email], 
    DeliveryAddressLine1 AS [CustomerContact.Address1], 
    DeliveryAddressLine2 AS [CustomerContact.Address2], 
    CityName AS [CustomerContact.City], 
    StateProvinceName AS [CustomerContact.State], 
    DeliveryPostalCode AS [CustomerContact.Zip], 
    CustomerCategoryName AS CustomerType, 
    WebsiteURL As Website 
FROM 
    Sales.Customers 
    LEFT JOIN Sales.CustomerCategories 
    ON Customers.CustomerCategoryID = CustomerCategories.CustomerCategoryID 
    LEFT JOIN Application.Cities 
    ON Customers.DeliveryCityID = Cities.CityID 
    LEFT JOIN Application.StateProvinces 
    ON Cities.StateProvinceID = StateProvinces.StateProvinceCode 
    LEFT JOIN Application.People 
    ON Customers.CustomerID = People.PersonID 
WHERE 
    Customers.CustomerID = 200 
FOR JSON PATH 

當我嘗試這一點,它只是引發以下錯誤:

Conversion failed when converting the ****** value '******' to data type ******. 

有誰知道這是什麼意思?

編輯:***的字面上顯示爲星號,而不是隱藏的值。該生產線的錯誤是Msg 245, Level 16, State 1, Line 1

+0

在這種情況下,這可能意味着您試圖將兩列用不同的類型等同。你能分享一下*****的內容嗎?如果它給你一個行號? – Simon

+0

首先想到的是這一行:ON Cities.StateProvinceID = StateProvinces.StateProvinceCode - 你的意思是加入ID與代碼? – Simon

+0

這實際上解決了它,它生成了JSON字符串,但它是...時髦。不是我所期望的。 – user3066571

回答

1

是彈簧想到的第一件事是這一行:

ON Cities.StateProvinceID = StateProvinces.StateProvinceCode 

您的意思是加入ID與代碼?