我的要求是显示一次表名,然后显示该表的所有列名。我无法做到这一点。我希望它可以通过查询本身完成,而不是使用存储过程。始终,它使用列名重复表名。 我希望一次显示表名(Entity),并在其下显示所有列名(属性)。然后是下一个表名(Entity),后跟其列名(属性),依此类推。
提前谢谢。
答案 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
阿尔伯特