根据某字段的不同属性值对另一字段的值进行合并

dl 为项目类型  ghlxmc 为dl 下的二级分类  根据 dl 和 ghlxmc 合计 rc 和 lw 


SELECT [dl],[ghlxmc],sum(rc),sum(lw) FROM [JXKH_BI_WebSite].[dbo].[GR_1_fp] 

  group by [dl],[ghlxmc]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,可以使用数组的reduce方法来将数据源按照id进行区分,并将相同id的对象合并起来,最后再根据需要合并字段进行单元格合并。 具体实现步骤如下: 1. 使用reduce方法将数据源按照id进行区分,并将相同id的对象合并起来。 2. 遍历合并后的数据源,将相邻且需要合并字段相同的对象进行合并,并记录需要合并的单元格的行和列信息。 3. 在渲染表格时,根据记录的行和列信息,设置需要合并的单元格的rowSpan和colSpan属性。 下面是一个示例代码,仅供参考: ```javascript const data = [ { id: 1, name: 'John', age: 20 }, { id: 2, name: 'Mary', age: 18 }, { id: 1, name: 'Smith', age: 22 }, { id: 3, name: 'Jane', age: 20 }, ]; // 将数据源按照id进行区分,并将相同id的对象合并起来 const groupedData = data.reduce((acc, cur) => { const key = cur.id; if (!acc[key]) { acc[key] = [cur]; } else { acc[key].push(cur); } return acc; }, {}); // 记录需要合并的单元格的行和列信息 const rowSpanMap = {}; const colSpanMap = {}; let rowIndex = 0; for (let id in groupedData) { const group = groupedData[id]; for (let i = 0; i < group.length; i++) { const item = group[i]; if (i === 0) { rowSpanMap[`${rowIndex},${0}`] = group.length; } else { const prevItem = group[i - 1]; if (item.name === prevItem.name && item.age === prevItem.age) { rowSpanMap[`${rowIndex},${1}`]++; colSpanMap[`${rowIndex - 1},${1}`] = true; colSpanMap[`${rowIndex},${1}`] = true; } else { rowSpanMap[`${rowIndex},${0}`] = 1; rowSpanMap[`${rowIndex},${1}`] = 1; } } rowIndex++; } } // 渲染表格 const table = document.createElement('table'); for (let id in groupedData) { const group = groupedData[id]; for (let i = 0; i < group.length; i++) { const item = group[i]; const tr = document.createElement('tr'); const tdId = document.createElement('td'); tdId.textContent = item.id; tdId.rowSpan = rowSpanMap[`${i},${0}`]; tdId.colSpan = colSpanMap[`${i},${0}`] ? 0 : 1; tr.appendChild(tdId); const tdName = document.createElement('td'); tdName.textContent = item.name; tdName.rowSpan = rowSpanMap[`${i},${1}`]; tdName.colSpan = colSpanMap[`${i},${1}`] ? 0 : 1; tr.appendChild(tdName); const tdAge = document.createElement('td'); tdAge.textContent = item.age; tr.appendChild(tdAge); table.appendChild(tr); } } document.body.appendChild(table); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值