2012-04-02 13 views
0

は私が何をしたいのか、このCTEはSQL結合テーブルにのみ最初の3つの項目に参加

;WITH Columns AS 
(
    SELECT object_id AS TableId, Name AS ColumnName 
    FROM SYS.columns 
), 
Tables AS 
(
    SELECT S.NAME AS SchemaName, T.NAME AS TableName, object_id AS TableId 
    FROM sys.tables T 
    INNER JOIN sys.schemas S ON S.schema_id = T.schema_id 
) 
SELECT T.SchemaName, T.TableName, C.ColumnName 
FROM Tables T 
INNER JOIN Columns C ON T.TableId = C.TableId 

を検討制限することは、第1 3なるだけに列の結果を制限することである(例えばアルファベット順言います)

私は1つの4つのcolsの各コーラ、COLBとの2つのテーブルTABLEX & Tableyの持つスキーマ(例えばDBO)、COLC、風邪をひいているのであれば私の結果は

dbo TableX ColA 
    dbo TableX ColB 
    dbo TableX ColC 
    dbo TableY ColA 
    dbo TableY ColB 
    dbo TableY ColC 
よう ものになるだろう

schema_a

答えて

1

は私が

Select Top row of 2nd table in SQL Join

;WITH Columns AS 
(
    SELECT 
     row_number() over (partition by object_id ORDER BY Name DESC) as RowNumber, 
     object_id AS TableId, 
     Name AS ColumnName 
    FROM SYS.columns 
), 
Tables AS 
(
    SELECT 
     S.NAME AS SchemaName, 
     T.NAME AS TableName, object_id AS TableId 
    FROM sys.tables T 
    INNER JOIN sys.schemas S ON S.schema_id = T.schema_id 
) 
SELECT T.SchemaName, T.TableName, C.RowNumber, C.ColumnName 
FROM Tables T 
INNER JOIN Columns C ON T.TableId = C.TableId 
where RowNumber BETWEEN 1 AND 3 
+0

:-)答えを見つけたあなたはとても速く:) – a1ex07

+0

が右SO適切にチェックしないために私をお楽しみいただけます見えます。ページをリフレッシュするとすぐに、「関連する」リストにその回答が表示されました。しかし、その質問は少し違うので、私はこれがかなり重複しているとは思わない。 –

関連する問題