将2个select语句与INFORMATION_SCHEMA.Tables组合使用

时间:2016-08-25 12:59:01

标签: sql-server tsql sql-server-2014

嘿,我有以下2个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。

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

如果要将输出放在同一列中:

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'

答案 1 :(得分:0)

SELECT 
TABLE_NAME 
FROM 
Exceltest.INFORMATION_SCHEMA.Tables 
WHERE 
TABLE_TYPE = 'BASE TABLE'
UNION
SELECT 
CAST(COUNT(TABLE_NAME) AS VARCHAR(50)) AS TABLE_NAME 
FROM 
Exceltest.INFORMATION_SCHEMA.Tables 
WHERE 
TABLE_TYPE = 'BASE TABLE'

答案 2 :(得分:0)

使用此

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)