Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中对超过100000行的整列进行过程循环_Sql_Procedure - Fatal编程技术网

在SQL中对超过100000行的整列进行过程循环

在SQL中对超过100000行的整列进行过程循环,sql,procedure,Sql,Procedure,我有一个查询,它将遍历许多表,这些表将添加count*以创建一个ID的完成百分比。它的编写方式只允许您一次查找一个ID的完成百分比。我需要运行这个来获取超过100000个ID的所有百分比 ID is_complete ------------------------- 1 15 我试图使@ID的值为many,但得到错误: ID is_complete ------------------------- 1

我有一个查询,它将遍历许多表,这些表将添加count*以创建一个ID的完成百分比。它的编写方式只允许您一次查找一个ID的完成百分比。我需要运行这个来获取超过100000个ID的所有百分比

 ID           is_complete
 -------------------------
 1                15
我试图使@ID的值为many,但得到错误:

 ID           is_complete
 -------------------------
 1                15
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

 ID           is_complete
 -------------------------
 1                15
我尝试过工会,但由于有许多价值观,这似乎是一种浪费。我还试图重写查询,但由于涉及的表太多,存在错误空间,如果有更简单的方法,我不想走这条路

 ID           is_complete
 -------------------------
 1                15
下面是我实际工作的一个简单版本

DECLARE @ID INT
SELECT @ID = (SELECT ID FROM table WHERE date > 2018)

SELECT 
    @ID ID, 
    SUM(CASE WHEN [BITFIELD] > 0 THEN 1 ELSE 0 END) AS IS_COMPLETED
FROM 
    Table
 ID           is_complete
 -------------------------
 1                15
我得到的数据:

 ID           is_complete
 -------------------------
 1                15
我想要的数据:

 ID           is_complete
 -------------------------
 1                15
ID           is_complete
------------------------
 1              15       
 2             100       
 3              20 

您可以根据ID在表和组上进行聚合,如下所示:

 ID           is_complete
 -------------------------
 1                15
SELECT 
    ID
    , SUM(CASE WHEN [BITFIELD] > 0 THEN 1 ELSE 0 END) AS IS_COMPLETED
FROM Table
WHERE date > 2018
GROUP BY ID
你似乎只是想分组。但对于比率/百分比,我建议平均值:

 ID           is_complete
 -------------------------
 1                15

请在这里分享一些示例数据,以便我们能更清楚地理解。还请使用4个空格缩进代码和格式化表,或者突出显示块,然后单击编辑器中的{},以便保留格式。我不确定初始查询如何返回ID=1的正确数据,因为您正在对整个表进行聚合,而不仅仅是在ID=1的位置。