【发布时间】:2020-02-14 06:32:15
【问题描述】:
我有一个类别表,属性为
此 tag_id 是其父或子的序列或模式。
示例:
CREATE TABLE category (
id int,
parent_id int,
code varchar(255),
name varchar(255).
tag_id varchar(255)
);
INSERT INTO category (id, parent_id, code, name, tag_id)
VALUES
(1,null,0,'category 1','|1|'),
(2,null,1,'category 2','|2|'),
(3,null,2,'category 3','|3|'),
(4,null,3,'category 4','|4|'),
(5,4,4,'category 5','|4|5|'),
(6,5,5,'category 6','|4|5|6|');
如您所见,您可以确定该类别是否为父类别,如果 tag_id 内的第一个值是其 id。
我想按相同的第一个父 ID 按此类别分组
原因:我将此表连接到另一个表,其中有一个金额列,我想使用第一个父 ID 进行汇总和分组。
例如,我有一个销售表,其中它与产品表有关系。而且这个产品表和品类表有关系。
在销售表中,它有一列 total_amount 和 product_id。此 product_id 链接到产品表的 id。并且这个产品表有一个 category_id 列,该列链接到类别表的 id。
主要目标是获得销售第一级类别的总金额。我只需要如何拆分这个 |字符并只获取第一级类别
谢谢!
【问题讨论】:
-
样本数据中的逗号在哪里?你的预期输出是什么?是否还涉及其他表,如果是,则还提供该表的 DDL 和示例数据。
-
@Star SQL Server 版本是多少?
-
请用 CREATE TABLE 和 INSERT INTO 脚本替换您的结构和数据,并为显示的数据显示所需的结果。
-
好吧。现在我们希望看到此数据的预期结果。 主要目标是获得销售第一级类别的 TOTAL_AMOUNT 总和。 源数据中没有名为
TOTAL_AMOUNT的字段 - 无需总结。 -
@Star gotqn 询问您“SQL Server 版本是什么?” 40 分钟前。你忽略了这个问题——所以我决定你有最新的版本。您至少现在可以指定服务器的版本吗?只需执行
select @@version;并发布结果。
标签: sql sql-server split