1

SELECT ステートメントの結果を JSON オブジェクトとして出力したいと考えています。

id    name        active  Status
1     Bob Jones   1       Active
2     John Smith  0       Inactive

次のような結果を返す必要があります。

{"Active"  :[{"id":1,"name":"Bob Jones" ,"active":1}],
 "InActive":[{"id":2,"name":"John Smith","active":0}]}

クエリの使用方法

私はこのコードを使用しています

DECLARE @JSONTierDetails AS TABLE (TierDetails VARCHAR(8000))

INSERT INTO @JSONTierDetails 
    SELECT
        (SELECT id, name, active 
         FROM MyTable 
         WHERE Status = 'Active' 
         FOR JSON PATH, INCLUDE_NULL_VALUES) TierDetails

SELECT TierDetails 
FROM @JSONTierDetails

前もって感謝します

4

3 に答える 3

0

ケースには、各 JSON 式の配列ラッパーとプロパティ名が必要です。配列ラッパーの追加はそれほど難しくありませんが、プロパティ名は難しいです。, ROOT(<property_name>)afterFOR JSON PATHを使用することもできますが、一度だけ静的に適用することもできます。

したがって、次のような動的クエリが優先される場合があります。

DECLARE @JSONTierDetails NVARCHAR(MAX) = 
(
 SELECT 'SELECT ' + 
    STUFF((
            SELECT  N',(SELECT id, name, active 
                          FROM MyTable subT 
                         WHERE subT.status = ''' + status + N''' 
                           FOR JSON PATH
                       ) AS [' + status + N']' + CHAR(13) + '   '
              FROM MyTable t
            FOR XML PATH(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)'),1,1,'')
        + 'FOR JSON PATH, WITHOUT_ARRAY_WRAPPER' );

EXEC (@JSONTierDetails);

Demo

于 2020-05-31T20:19:41.700 に答える
-1

Microsoft サイトのこのページを参照してください: JSON データ (SQL Server)

于 2017-05-10T04:53:11.200 に答える