json - SQL Server:如何将所有行作为 Json 对象查询到其他列旁边?
问题描述
这是我的代码
SELECT
PML_CODE
,PML_NAME_ENG
,(
SELECT
PML_ID
,PML_NO
,PML_CODE
,PML_NAME_ENG
,PML_FORMULA
FROM DSP.PARAMET_LIST AS A WITH(NOLOCK)
WHERE A.PML_ID = B.PML_ID
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
) AS BR_OBJECT
FROM DSP.PARAMET_LIST AS B WITH(NOLOCK)
我的代码适用于我想要的,但我想知道是否有更好、更快的方法来编写这个查询?
解决方案
下次请不要发布图片,而是尝试创建一些 DDL,用示例数据填充它,并说明您自己的尝试和预期的输出。这使我们更容易理解和回答您的问题。
你可以这样尝试:
DECLARE @tbl TABLE(PML_ID BIGINT, PML_NO INT, PML_CODE VARCHAR(10), PML_NAME_ENG VARCHAR(10), PML_FORMULA VARCHAR(10));
INSERT INTO @tbl VALUES
(2017102600050,1,'KHR','Riel','01')
,(2017102600051,2,'USD','Dollar','02')
,(2017102600052,3,'THB','Bath','05')
SELECT
PML_CODE
,PML_NAME_ENG
,BR_OBJECT
FROM @tbl
CROSS APPLY(
SELECT
(
SELECT
PML_ID
,PML_NO
,PML_CODE
,PML_NAME_ENG
,PML_FORMULA
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
)) AS A(BR_OBJECT);
与您自己的方法的最大区别在于,我使用CROSS APPLY
我们已经拥有的列而不是调用相关子查询。
推荐阅读
- git - 包含子模块文件夹的分叉 GitHub 存储库的问题
- ssl-certificate - 将区域 AWS IoT 核心锁定到特定 CA
- python-3.x - Boto3 没有从 aws-cli 没有问题的凭证中承担 IAM 角色
- python-3.x - 调用大数据集时netCDF4错误HDF错误?
- python - 使用 pandax corr 矩阵获取 KeyError
- vue.js - 可重用的 Vue 组件 props 传递
- undefined - 响应式语句一旦遇到未定义的变量就会引发错误。如何预防?
- python - 如何将变量分配给 If 语句?
- jquery - 如何在 jQuery 验证插件中使用自定义函数
- android - rxjava2 中的多个地图填充器链与大型集合上的单个 for 循环