Sql server 将2条select语句与信息\u SCHEMA.Tables组合
嘿,我有以下两个SQL查询:Sql server 将2条select语句与信息\u SCHEMA.Tables组合,sql-server,tsql,sql-server-2014,Sql Server,Tsql,Sql Server 2014,嘿,我有以下两个SQL查询: SELECT TABLE_NAME FROM Exceltest.INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE' 产生: 'AC Technician$' 'Drafting$' 'IT Tech$' 'Maintenance$' 'Carpentry$' 'Masonry$' 'Exercise$' 第二个问题: SELECT COUNT(TABLE_NAME) A
SELECT
TABLE_NAME
FROM
Exceltest.INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
产生:
'AC Technician$'
'Drafting$'
'IT Tech$'
'Maintenance$'
'Carpentry$'
'Masonry$'
'Exercise$'
第二个问题:
SELECT
COUNT(TABLE_NAME) AS rollcount
FROM
Exceltest.INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
这给了我7的值,这是正确的
现在,我希望将这两个问题合并到一个查询中。我试过:
SELECT
TABLE_NAME
FROM
Exceltest.INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
UNION
SELECT
COUNT(TABLE_NAME) AS rollcount
FROM
Exceltest.INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
但我得到的错误是:
将nvarchar值“AC Technician$”转换为数据类型int时,转换失败
任何帮助都会很好 如果要将输出放在同一列中:
SELECT
TABLE_NAME
FROM
Exceltest.INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
UNION
SELECT
CAST(COUNT(TABLE_NAME) AS VARCHAR(20)) AS rollcount
FROM
INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
用这个
SELECT
TABLE_NAME,
(
SELECT
COUNT(TABLE_NAME) AS rollcount
FROM
INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
) AS Cnt
FROM INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE';
+----------------------------------------------------+------+
| TABLE_NAME | Cnt |
+----------------------------------------------------+------+
| ARCHIVE_GLOBAL_STATUS | 95 |
| HISTO_GLOBAL_STATUS | 95 |
| HISTO_SAVE | 95 |
| PurgeInfo | 95 |
| Stats | 95 |
....
| socket_summary_by_instance | 95 |
| table_io_waits_summary_by_index_usage | 95 |
| table_io_waits_summary_by_table | 95 |
| table_lock_waits_summary_by_table | 95 |
| threads | 95 |
| users | 95 |
+----------------------------------------------------+------+
95 rows in set (0.02 sec)
不完全正确,但使用您的第二个选择,我能够将它与我的第一个选择相结合,这很有效。谢谢Pinwar13!对您的帖子进行了正确的编辑。
SELECT
TABLE_NAME,
(
SELECT
COUNT(TABLE_NAME) AS rollcount
FROM
INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE'
) AS Cnt
FROM INFORMATION_SCHEMA.Tables
WHERE
TABLE_TYPE = 'BASE TABLE';
+----------------------------------------------------+------+
| TABLE_NAME | Cnt |
+----------------------------------------------------+------+
| ARCHIVE_GLOBAL_STATUS | 95 |
| HISTO_GLOBAL_STATUS | 95 |
| HISTO_SAVE | 95 |
| PurgeInfo | 95 |
| Stats | 95 |
....
| socket_summary_by_instance | 95 |
| table_io_waits_summary_by_index_usage | 95 |
| table_io_waits_summary_by_table | 95 |
| table_lock_waits_summary_by_table | 95 |
| threads | 95 |
| users | 95 |
+----------------------------------------------------+------+
95 rows in set (0.02 sec)