【问题标题】:SQL Server Count rows having specific Values & Also count child rows with same specific fieldSQL Server 计算具有特定值的行并计算具有相同特定字段的子行
【发布时间】:2016-09-10 10:44:42
【问题描述】:

表格是这样的

CREATE TABLE [CONTENTS].[ID] 
(
    [ID]          NVARCHAR (20)   NOT NULL,
    [NAME]        NVARCHAR (MAX)  NOT NULL,
    [CONTENT]     NVARCHAR (MAX)  NULL,
    [PARENT_ID]   NVARCHAR (20)   NOT NULL,
    [TYPE]        INT             NOT NULL,
    [SHARED]      INT             NOT NULL,
    [CREATED]     DATETIME        NULL,
    [ICON]        VARBINARY (MAX) NULL,
    [UPDATED]     DATETIME        NULL,
    [TASK_STATUS] INT             NULL
);

  • 如果Type列是2,具体值为ID,那么我需要计算那一行。

  • 如果 Type 列是 1,那么它将是另一行(子行)的父级

我还想获取 ID 的所有子行的计数。

最后我想对所有行数求和。

以下表为例。

ID    NAME    PARENT_ID    TYPE
111   A        000          1
222   B        111          1
333   C        111          2
444   D        111          2
555   E        222          2

ID → 111 具有类型 2 的行数是 3。 (即)222 是 111 的子级,还添加了类型 2。

预期结果:COUNT 3

【问题讨论】:

  • 问题中表格格式的样本数据和所需结果会有所帮助。
  • 提供你的结果,它应该是什么样子?将有助于解决您的问题。

标签: sql sql-server count row


【解决方案1】:

这不是完整的解决方案,但可能会给你一个想法

//It will return 1 or 0 if id is unique
select count(*) from tablex where type = 2 and id = x;

//To get count of child rows with parent id
select tablex.id, tablexb.child_count from tablex INNER JOIN (select parent_id, count(*) as child_count from tablex group by parent_id) as tablexb ON tablex.id = tablexb.parent_id where tablex.type = 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2021-07-14
    • 2023-03-19
    • 1970-01-01
    • 2022-12-22
    • 2016-02-12
    相关资源
    最近更新 更多