【发布时间】:2020-10-12 08:15:30
【问题描述】:
ALTER PROCEDURE [dbo].[SpInvoiceSel]
AS
BEGIN
Declare @json varchar(MAX)
SET @json = (
select (
select InvoiceId as 'invoiceId',
i.CustomerId as 'customerId',
o.OrganizationName as 'organizationName',
(p.FirstName + p.LastName) as 'fullName',
sum(i.TotalRate) as 'totalrate'
from Invoice as i
inner join Customer as c
on c.CustomerId = i.CustomerId
inner join Organization as o
on o.OrganizationId = c.OrganizationId
inner join Employee as e
on e.EmployeeId = i.EmployeeId
inner join Person as p
on p.PersonId = e.PersonId
group by InvoiceId,i.CustomerId,i.EmployeeId,p.FirstName,p.LastName,i.TotalRate,o.OrganizationName
FOR JSON PATH, include_null_values
) as 'data' for json path, without_array_wrapper
)
select @Json as 'Json'
END
“Nathan field 和 Robert Plant 在不同的列中”现在我需要将它们放在一行中
【问题讨论】:
-
请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。反映你的研究。 How to Ask
-
你为什么要在
i.TotalRate上聚合和分组? -
“Nathan field 和 Robert Plant 在不同的列” 不,它们都在同一列;列
Employee。预期结果将帮助我们在这里为您提供帮助。 -
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)的 SQL,并以表格格式作为代码输入。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你的期望和原因。