有难度的sql相同列值合并行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有难度的sql相同列值合并行相关的知识,希望对你有一定的参考价值。
原表:
商品名称 |长 |宽
商品1 100 110
商品1 100 110
商品1 110 100
商品2 100 110
商品2 110 110
商品2 110 120
商品2 110 120
要求结果为:商品名称,长,宽都相同则合并行(select distinct 商品名称,长,宽 from 原表 就可以,关键是后面的怎么处理)。 还有长为110宽为100 和 长为100宽为110的也要合并。
结果为:
商品名称 |长 |宽
商品1 100 110
商品2 100 110
商品2 110 110
商品2 110 120
unino将记录联合起来,except将记录进行排除,
具体的SQL语句如下:
select distinct 商品名称,长,宽 --将所有不同的记录查找出来
from 商品表
except --将所有有(长=100 and 宽 =110)或(长=110 and 宽 =100) 的记录排除出去
select distinct 商品名称,长,宽
union --将所有有(长=100 and 宽 =110)的记录增加进来
from 商品表
where (长=100 and 宽 =110) or (长=110 and 宽 =100)
union
select distinct 商品名称,长,宽
from 商品表
where 长=100 and 宽 =110
呵呵,希望能有帮助,^_^ 参考技术A 有多种方法,这种方法最直观:
select distinct 商品名称,case when 宽<长 then 长 else 宽 end as 长,case when 宽<长 then 宽 else 长 end as 宽 from 原表本回答被提问者采纳 参考技术B select * into #temp from 原表
update #temp
set 长=100,
宽=110
where 宽=100 and 长=110
select distinct 商品名称,长,宽 from #temp 参考技术C select 商品名称,长,宽 from table group by 商品名称,长,宽 参考技术D 楼上的就能实现你的要求:select 商品名称,长,宽 from table group by 商品名称,长,宽
将sql查询相同的列值合并到一个数组中
【中文标题】将sql查询相同的列值合并到一个数组中【英文标题】:Merge sql query same columns values into one array 【发布时间】:2014-02-07 17:24:28 【问题描述】:我有这个简单的查询。
SELECT purchase.Quantity*purchase.Price AS Total FROM purchase.
在代码点火器中,我通过以下方式将结果作为数组获取:$this->db->query($query)->result_array();
查询结果为:
array(2) [0]=> array(1) ["Total"]=> string(2) "42" [1]=> array(1) ["Total"]=> string(5) "10900"
我想要的是一个单一的数组 Total,它包含所有的值,比如
Total=[42,10900]
我的代码或查询中是否缺少任何内容?
【问题讨论】:
你需要所有购买的总和吗? 不。我需要将两列相乘$output = array_map(function($v) return $v['Total']; , $result);
?
我不确定您的确切需求是什么,但如果您想要总拨款,您可以使用SUM(purchase.Quantity*purchase.Price) AS Total
【参考方案1】:
使用foreach
循环可以轻松实现您想要的。如果我理解正确的话..
$total = array();
foreach ($query->result_array() as $row)
$total[] = $row['Total'];
print_r($total); // outputs something like this: Array ( [0] => 42 [1] => 10900 )
【讨论】:
如果我不知道这里的属性名称怎么办? 我不明白你怎么不知道列名...? 如果它在运行时决定。 Total 可能是 TotalPurchase 只能是 Total 还是 TotalPurchase?以上是关于有难度的sql相同列值合并行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ag-Grid 中将相同的相邻行与动态行跨度合并? [关闭]
如何在合并数据集之前检查行是不是存在(SQL Server)