生成SQL查询以合并两个表并提取某种格式的数据

问题描述 投票:1回答:1

我有一个包含以下数据的数据库表:

st_code  st_name     st_data    
  AK     Alaska    {"sList":[1,2,3]}
  AL     Alabama   {"sList":[4,5,6]}
  AR     Arkansas  {"sList":[7,8,9]}

我还有一个具有以下数据的数据库日期:

sr_nbr                          sr_data                                       vD    vSt   f_p
  1    {"state":"AK","bU":{"num":1,"b":{"d":"VM"}}, "address":[{"a1":"b"}]}  false   AK   Null
  4    {"state":"AL","bU":{"num":4,"b":{"d":"VM"}}, "address":[{"a1":"b"}]}  false   AL   {"D":"x"}
  5    {"state":"AL","bU":{"num":5,"b":{"d":"VM"}}, "address":[{"a1":"b"}]}  false   AL   {"D":"y"}
  6    {"state":"AL","bU":{"num":6,"b":{"d":"VM"}}, "address":[{"a1":"b"}]}  false   AL   {"D":"z"}

两个表都有共同的st_code和vSt。另外,sr_nbr对应于sList号。我正在尝试构建数据库查询,该查询将返回以下内容。

{
  "stData": {
    "AL": {
      "sList": [4,5,6]
    }
  },
  "srData": {
    "4": {
     "state": "AL",
     "f_p":{
          "D":"x"
      },
      "bu": {},
      "num": 4
      },

    "5": {
     "state": "AL",
     "f_p":{
          "D":"y"
      },
      "bu": {},
      "num": 5
      },

    "6": {
     "state": "AL",
     "f_p":{
          "D":"z"
      },
      "bu": {},
      "num": 6
      }

      }

我尝试编写以下查询,但不确定使用此查询是否正确。

Select st_data
  From tbl_st_data
Where st_code = 'AL'
FOR JSON AUTO, Root('AL')
sql-server inner-join jointable
1个回答
0
投票

您首先需要连接两个表:然后创建JSON字符串。样本:

With t
as(
Select *
From table1 inner join table2 ON st_code=vSt
)
Select * from t
FOR JSON PATH

您可以使用concatt函数,sting_agg(ColumnName,',')函数等来创建任何不同的列。

© www.soinside.com 2019 - 2024. All rights reserved.