SQL Server计数行具有特定值&还要计算具有相同特定字段的子行

时间:2016-09-10 10:44:42

标签: sql sql-server count row

表格看起来像这样

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
);

enter image description here

  • 如果列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

具有类型2的行计数的ID→111 3 。 (即)222是111的孩子,也增加了2型。

预期结果: COUNT 3

1 个答案:

答案 0 :(得分:0)

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

//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;