2017-04-24 1 views
1

Ich versuche, die folgende Abfrage auszuführen, um eine JSON-Zeichenfolge aus einem Kundendatensatz in einer Beispieldatenbank zu erstellen.SQL FÜR JSON Conversion Problem

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 

Wenn ich dies versuchen, wirft es einfach den folgenden Fehler:

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

Wer weiß, was das bedeutet?

EDIT: Die *** sind buchstäblich als Sternchen, kein versteckter Wert. Die Leitungsfehler sind Msg 245, Level 16, State 1, Line 1

+0

In diesem Fall bedeutet es wahrscheinlich, dass Sie versuchen, zwei Spalten mit unterschiedlichen Typen gleichzusetzen. Könnten Sie teilen, was die ***** sind und ob es Ihnen eine Zeilennummer gibt? – Simon

+0

Das erste, was mir in den Sinn kommt, ist diese Zeile: ON Cities.StateProvinceID = StateProvinces.StateProvinceCode - wollten Sie ID mit Code verbinden? – Simon

+0

Das hat es tatsächlich repariert, es erzeugte den JSON String, aber es ist ... funky. Nicht das was ich erwartet habe. – user3066571

Antwort

1

Das erste, was in dem Sinne ist diese Linie:

ON Cities.StateProvinceID = StateProvinces.StateProvinceCode 

Haben Sie ID-Code mit verbinden bedeuten?