嘿,我有以下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。
任何帮助都会很棒!
答案 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)