首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从表名查询中获取select count(x

如何从表名查询中获取select count(x
EN

Stack Overflow用户
提问于 2018-07-11 02:39:27
回答 1查看 368关注 0票数 -1

我有一个查询,它返回一个表的列表和这些表的计数。

代码语言:javascript
复制
select *
from error

其结果是

代码语言:javascript
复制
tablename | errorcnt
----------+---------
table1    |        5
table2    |      256

诸若此类。

我需要做一个join,这样我就可以从每个表中获得关于已更正的记录的另一个计数示例

代码语言:javascript
复制
select count(fixed)
from table1

所以我的新结果是

代码语言:javascript
复制
tablename | errorcnt | fixed
----------+----------+------
table1    |        5 |     3
table2    |      256 |   239

诸若此类。

如果不做游标,我该怎么做?我猜是使用'tablename‘的子查询。

EN

回答 1

Stack Overflow用户

发布于 2018-07-11 03:37:11

可以使用临时表和while循环来避免游标

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51272081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档