【发布时间】:2010-10-17 04:49:37
【问题描述】:
我想要一个查询,它将为视图中的每一列返回一行,并为视图本身返回一行。
结果中应该有一个列基表,它为当前行中的列提供基表,结果中应该有一个列基字段,它给出基础查询中列的名称(对于重命名的列)。如果任何计算也可以包含在 basefield 列中,那将是一个额外的好处。
我不认为这是可以做到的。我错了吗?
在下面的示例中,“这里发生了什么”应在 basetable 列中适当替换为 table1 或 table2,在 basefield 列中适当替换为 a、b 或 c。
创建表 table1 (a int, b int) 创建表 table2 (a int, c int) 走 创建视图view1 as select table1.a, table1.b, table2.c from table1 left join table2 on table1.a = table2.a 走 选择 * 从 ( select 'View' objecttype,O.name viewname,'' fieldname,0 column_id,'' typename,'' max_length,'' [precision], '' scale, '' is_identity, '这里发生了什么' basetable,'' basefield 从 sys.objects O where O.type='V' and O.[schema_id] = 1 联合所有 select 'Field' objecttype,object_name(C.[object_id]) viewname,C.name fieldname,C.column_id,T.name typename,C.max_length,C.precision,C.scale,C.is_identity, '这里有什么' basetable,'这里有什么' basefield 来自 sys.columns C left join sys.types T on C.user_type_id=T.system_type_id 其中 C.[object_id] in (select O.[object_id] from sys.objects O where O.type='V') ) 一世 其中视图名称在('view1') 按视图名、column_id 排序 下降视图 view1 删除表 table1 删除表 table2【问题讨论】:
标签: sql-server sql-server-2005 database-design schema