Last active
February 6, 2017 22:09
-
-
Save bertwagner/96b7827298a308d0877509ff35504df2 to your computer and use it in GitHub Desktop.
SQL Server 2016 JSON's FOR JSON AUTO
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- AUTO will format a result into JSON following the same structure of the result set | |
SELECT Make, BaseModel, Trim, Year, PurchaseDate | |
FROM ##Garage | |
FOR JSON AUTO; | |
-- Output: [{"Make":"Volkswagen","BaseModel":"Golf","Trim":"GL","Year":2003,"PurchaseDate":"2006-10-05T00:00:00"},{"Make":"Subaru","BaseModel":"Impreza","Trim":"Premium","Year":2016,"PurchaseDate":"2015-08-18T00:00:00"}] | |
-- Using aliases will rename JSON keys | |
SELECT Make AS [CarMake] | |
FROM ##Garage | |
FOR JSON AUTO; | |
-- Output: [{"CarMake":"Volkswagen"},{"CarMake":"Subaru"}] | |
-- Any joined tables will get created as nested JSON objects. The alias of the joined tables becomes the name of the JSON key | |
SELECT g1.Make, Model.BaseModel as Base, Model.Trim, g1.Year, g1.PurchaseDate | |
FROM ##Garage g1 | |
INNER JOIN ##Garage Model on g1.Id = Model.Id | |
FOR JSON AUTO; | |
-- Output: [{"Make":"Volkswagen","Year":2003,"PurchaseDate":"2006-10-05T00:00:00","Model":[{"Base":"Golf","Trim":"GL"}]},{"Make":"Subaru","Year":2016,"PurchaseDate":"2015-08-18T00:00:00","Model":[{"Base":"Impreza","Trim":"Premium"}]}] | |
-- Finally we can encapsulate our entire JSON result in a parent element by specifiying the ROOT option | |
SELECT Make, BaseModel, Trim, Year, PurchaseDate | |
FROM ##Garage | |
FOR JSON AUTO, ROOT('Cars'); | |
-- Output: {"Cars":[{"Make":"Volkswagen","BaseModel":"Golf","Trim":"GL","Year":2003,"PurchaseDate":"2006-10-05T00:00:00"},{"Make":"Subaru","BaseModel":"Impreza","Trim":"Premium","Year":2016,"PurchaseDate":"2015-08-18T00:00:00"}]} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment