Sql server 将2条select语句与信息\u SCHEMA.Tables组合

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

嘿,我有以下两个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) 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)