如何在SQL Server中显示所有表名后跟所有列名?

时间:2015-12-04 00:01:13

标签: sql-server sql-server-2008 sql-server-2005 sql-server-2012

我的要求是显示一次表名,然后显示该表的所有列名。我无法做到这一点。我希望它可以通过查询本身完成,而不是使用存储过程。始终,它使用列名重复表名。 我希望一次显示表名(Entity),并在其下显示所有列名(属性)。然后是下一个表名(Entity),后跟其列名(属性),依此类推。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

将表连接到列时,每一行都有一个表名和一个列名。当表的第一列出现时,您希望显示表名,并在下一行显示列名。当该表的第二列(以及所有其他列)出现时,您只想显示列名。要知道您是否正在查看表的第一列名称,您必须对表组中的行进行编号。当行号为1时,您正在处理组中的第一列。

试试这个:

SELECT case when row_number() over (partition by t.name order by  t.name)=1 then
     t.name + char(13)  + char(9) + c.name
else
    char(9) + c.name
end as Columns

FROM sys.tables AS t
INNER JOIN sys.columns c 
    ON t.OBJECT_ID = c.OBJECT_ID

ORDER BY t.name
, c.name

阿尔伯特