例如我现在要查询所有表是否包含列A,B,C的, ABC为界面文本框输入的,
数据显示结果如下图:
TableName A B C
表1 Y N Y
表2 Y Y Y
表3 N N N
表4 N N Y
5 个解决方案
#1
select t.name, c.name
from sys.columns c inner join sys.tables t on c.object_id=t.object_id
上述语句你可以得到所有的表名及列名,然后进行统计。生成交叉表有许多方法。
from sys.columns c inner join sys.tables t on c.object_id=t.object_id
上述语句你可以得到所有的表名及列名,然后进行统计。生成交叉表有许多方法。
#2
楼上+1.......
#3
1楼大神 这个语句我也写出来了 但是这种一传条件(指定的列)就只有几条数据了, 我要的是传了筛选条件结果集依然是所有表,然后表中含有的就是‘Y’,不存在的就显示‘N’,应该用到groupby语句 但写不出来
#4
可以考虑下面的sql,只需要改一下参数'A'就可以查询其他列的情况
select tablename,
case when fieldname is null then 'N' else 'Y' end as A
from (
select a.name as tablename,b.name as fieldname
from (select * from sys.objects where type='u') a
left join sys.columns b on a.object_id=b.object_id
and b.name='A'
) c
#5
我试了,一个字段是可以的,但是输入多个结果集就不对了
#1
select t.name, c.name
from sys.columns c inner join sys.tables t on c.object_id=t.object_id
上述语句你可以得到所有的表名及列名,然后进行统计。生成交叉表有许多方法。
from sys.columns c inner join sys.tables t on c.object_id=t.object_id
上述语句你可以得到所有的表名及列名,然后进行统计。生成交叉表有许多方法。
#2
楼上+1.......
#3
1楼大神 这个语句我也写出来了 但是这种一传条件(指定的列)就只有几条数据了, 我要的是传了筛选条件结果集依然是所有表,然后表中含有的就是‘Y’,不存在的就显示‘N’,应该用到groupby语句 但写不出来
#4
可以考虑下面的sql,只需要改一下参数'A'就可以查询其他列的情况
select tablename,
case when fieldname is null then 'N' else 'Y' end as A
from (
select a.name as tablename,b.name as fieldname
from (select * from sys.objects where type='u') a
left join sys.columns b on a.object_id=b.object_id
and b.name='A'
) c
#5
我试了,一个字段是可以的,但是输入多个结果集就不对了