How to select multiple rows as multiple rows using for json path

827 views Asked by At

If I do this:

SELECT *
FROM someTable
FOR JSON PATH

I get a single result.

I want each row of the table to output as a separate row containing the json for just that row.

Can that be done?

2

There are 2 answers

1
Charlieface On BEST ANSWER

You can do this as a nested subquery. WITHOUT_ARRAY_WRAPPER will remove the [] around the JSON also

SELECT
  json = (
    SELECT p.*
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
  )
FROM someTable p;
2
Graham On

Never mind. I figured it out.

SELECT (SELECT *
        FROM someTable
        WHERE someUniqueColumn = p.someUniqueColumn
        FOR JSON PATH)
FROM someTable p