if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KeyColumnUsage]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[KeyColumnUsage]
GO
CREATE VIEW KeyColumnUsage
AS
SELECT K.Constraint_Name,
Column_Names = Substring(
Max(CASE K.Ordinal_Position WHEN 1 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 2 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 3 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 4 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 5 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 6 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 7 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 8 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 9 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 10 THEN ', ' + QuoteName(K.Column_Name) ELSE '' END)
, 3, 3000),
Column_Names2 = Substring(
Max(CASE K.Ordinal_Position WHEN 1 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 2 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 3 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 4 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 5 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 6 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 7 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 8 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 9 THEN '_' + K.Column_Name ELSE '' END)
+ Max(CASE K.Ordinal_Position WHEN 10 THEN '_' + K.Column_Name ELSE '' END)
, 2, 2000),
ColumnCount = Count(*)
FROM
Information_Schema.Key_Column_Usage K
GROUP BY
K.Constraint_Name