【发布时间】:2016-02-01 07:10:50
【问题描述】:
我想总结收入的值并按产品名称对其进行分组。我使用了以下方式。但是我无法汇总这些值并将其同时转换为 varchar,因为只有将其转换为 varchar 时才能获得 JSON 格式的结果。 这是我的查询
select '[' + STUFF(( select ',{"id":' + cast(id as varchar(max)) + ',"ProductName":"' + ProductName + '"' + ',"Revenue":'
+ cast(Revenue as varchar(max)) + ',"InYear":' + CONVERT(VARCHAR(10), InYear, 111) +'}' 来自 dummyRevenueData 其中 InYear>='2014/01/01' 和 InYear
以上查询结果:
[{"id":2,"ProductName":"P1","Revenue":700,"InYear":2014/01/01},{"id":3,"ProductName":"p1","Revenue":800,"InYear":2015/01/01},{"id":4,"ProductName":"p1","Revenue":900,"InYear":2016/01/01},{"id":6,"ProductName":"P2","Revenue":600,"InYear":2014/01/01},{"id":7,"ProductName":"P2","Revenue":200,"InYear":2015/01/01},{"id":8,"ProductName":"P2","Revenue":400,"InYear":2016/01/01},{"id":10,"ProductName":"p3","Revenue":100,"InYear":2014/01/01},{"id":11,"ProductName":"p3","Revenue":500,"InYear":2015/01/01},{"id":12,"ProductName":"p3","Revenue":400,"InYear":2016/01/01}]
我想总结收入,我的输出应该在
[{"ProductName":"P1","Revenue":2400},
{"ProductName":"p2","Revenue":1000}, {"ProductName":"p3","Revenue":1200}]
我尝试了以下查询,但没有得到结果:
select '[' + STUFF(( select ',{"id":' + cast(id as varchar(max)) + ',"ProductName":"' + ProductName + '"' + ',"Revenue":'
+ cast((sum(Revenue) as Rev) as varchar(max)) + ',"InYear":' + CONVERT(VARCHAR(10), InYear, 111) +'}' 来自 dummyRevenueData 其中 InYear>='2014/01/01' 和 InYear
【问题讨论】:
标签: sql-server json casting