-
创建表 Sales 表 (Customer varchar(50), Commodity varchar(50), Quantity int)。
插入到销售表单中 选择'客户 1','商品 1',2
插入到销售表单中 选择'客户 1','商品 2',1
插入到销售表单中 选择'客户 2','商品 1',5
插入到销售表单中 选择'客户 2','商品 2',3
插入到销售表单中 选择'客户 2','商品 3',1
插入到销售表单中 选择'客户 3','商品 1',1
销售表中的数据如下:
客户商品数量。
客户 1 产品 1 2
客户 1 产品 2 1
客户 2 产品 1 5
客户 2 产品 2 3
客户 2 产品 3 1
客户 3 产品 1 1
再次执行。 选择项目,总和(案例客户何时'客户 1'然后数量 else 0 结束)作为客户 1,sum(案例客户当'客户 2'则数量 else 0 结束)作为客户 2,sum(案例客户当'客户 3'则数量 else 0 结束)作为客户 3
从销售表按项目分组。
结果为:商品客户 1 客户 2 客户 3
商品 1 2 5 1
商品 2 1 3 0
商品 3 0 1 0
-
表的结构不明确,无法编写语句。
-
选择年、月、部门代码、总和(费用项目='人事费用'和费用分类='径直'然后金额 else 0 结束) 人员直接成本,总和(费用项目 = 的情况'人事费用'和费用分类='间接'然后金额 else 0 end) 人员成本间接费用,sum(费用项目 = 的情况'水电费'和费用分类='径直'然后金额 else 0 结束)效用直接成本,总和(费用项='水电费'和费用分类='间接'然后金额 else 0 end) 效用开销, sum(当费用项目 = 时的情况'其他费用'和费用分类='径直'然后金额 else 0 结束) 其他直接成本,总和(费用项目 = 时的情况'其他费用'和费用分类='间接'则金额 else 0 结束)其他间接费用。
从表中。
按年、月、部门代码分组。
-
看看效果是不是这样的:
测试用例:从选项卡中选择 *
SQL语句如下:
select [type],stuff(
select ','+name from tab t2 where for xml path(''按类型筛选转换为文本,并用 (逗号, ) 分隔。
1,1,'')info from tab t1 group by [type] order by t1.[type],信息分组和排序。
效果图如下:
如果发现没有,则所有相同的类型分组在名称列中用逗号 [,] 分隔。
关键段落**:你把它拿到数据库并执行它,将表格行形式转换为XML格式字符串,当你遇到标签和字符被添加时,标签就会被删除!
select ','+name from tab t2 for xml path('')
希望对你有所帮助!
-
假设该表有两列,A 和 B,如下所示。
select a,listagg(b, ',') within group(order by b) b from table group by a
在上面的 SQL 文本中,b 列可以水平输出,用逗号分隔,输出顺序按 b 值的升序排列。
-
在 oracle11g 中,这可以使用透视语法来实现。
在 11g 之前的版本中,可以使用存储过程的方法。
-
我不知道具体效果,我无法转换。
-
是的,我认为 id 列应该是唯一的。 根据 productid 分组时,取 max(id),然后将该 ID 关联起来,就可以查询其他列的数据了。
-
从你的角度来看,这是不一致的。
我想根据 productid 对多列数据进行分组,但实际上后面列的内容是不一样的,所以肯定会有多个数据出来。
如果要查询单个数据,但需要多个列,则没有人可以确定要查询哪一个。
如果是统计字段中的多列数据,则可以,并且在分组时可以选择统计数据字段。
-
with tablea as(
select 'a' a,'b' b,'c' cunion all
select 'a','b','c'
union all
select 'a','b','d'
union all
select 'a','c','d'
union all
select 'a','b','c',tableb as(
select a,b,c from tablea group by a,b,c
从表b中选择*,先将表A与分组依据关联,再将表B与表C关联。
-
您可以了解 decode() 函数,它可以达到转置的目的。
但是,仍然建议您使用 excel 来解决它。