sql - 如何从表名查询中获取选择计数(x)
问题描述
我有一个查询,它带回了一个表列表和这些表的计数。
select *
from error
结果是
tablename | errorcnt
----------+---------
table1 | 5
table2 | 256
等等。
我需要这样做,join
以便我可以从每个表中获取关于已更正的记录的另一个计数示例
select count(fixed)
from table1
所以我的新结果是
tablename | errorcnt | fixed
----------+----------+------
table1 | 5 | 3
table2 | 256 | 239
等等。
不做游标我怎么办?我猜想使用'tablename'的子查询。
解决方案
你可以使用临时表和while循环避免游标
DECLARE
@SQLQuery NVARCHAR(100),
@Tablename VARCHAR(100)
CREATE TABLE
#error
(
tablename VARCHAR(100),
errorcnt INT
)
CREATE TABLE
#Table1
(
fixed INT
)
CREATE TABLE
#Table2
(
fixed INT
)
CREATE TABLE
#Temp_fixed
(
fixed INT
)
INSERT INTO
#error
VALUES
(
'#Table1',
5
),
(
'#Table2',
256
)
INSERT INTO
#Table1
VALUES
(
3
)
INSERT INTO
#Table2
VALUES
(
239
)
SELECT
tablename,
errorcnt,
-1 AS fixed
INTO
#Temp_error
FROM
#error
WHILE EXISTS(SELECT TOP 1 1 FROM #Temp_error WHERE fixed = -1)
BEGIN
SET
@Tablename = (SELECT TOP 1 tablename FROM #Temp_error WHERE fixed = -1)
SET
-- @SQLQuery = 'SELECT COUNT(fixed) FROM ' + @Tablename
@SQLQuery = 'SELECT SUM(fixed) FROM ' + @Tablename
INSERT INTO
#Temp_fixed
(
fixed
)
EXECUTE
sp_executesql
@SQLQuery
UPDATE
#Temp_error
SET
fixed = ISNULL((SELECT TOP 1 fixed FROM #Temp_fixed), 0)
WHERE
tablename = @Tablename
TRUNCATE TABLE #Temp_fixed
END
SELECT
tablename,
errorcnt,
fixed
FROM
#Temp_error
DROP TABLE #error
DROP TABLE #Table1
DROP TABLE #Table2
DROP TABLE #Temp_error
DROP TABLE #Temp_fixed
推荐阅读
- r - 在两个数据帧之间查找相同的配对值
- javascript - Uncaught (in promise) TypeError: $scope.GetNomePacienteIndicou is not a function
- java - 以编程方式向 ConstraintLayout 添加障碍的问题
- excel - 我的代码会因我的要求而变慢,我该如何优化它?VBA
- html - HTML在方形网格图片中指定分隔线间隙测量
- c# - WinForms ObjectListView 选中标题中的所有复选框不起作用
- css - 如何在 Material UI 的表格列中将图像向左移动?
- sql - CSAnswers 表中的 NoteID 字段
- jquery - ajax 上的 jQuery UI datepicker dateformat 不起作用
- immutable.js - 为什么 immutable.Set.get(x) 不能作为 immutable.List.get(x) 工作?