2013-06-07 3 views
0

데이터를 표시하려면 image과 같습니다.
이것은 n^n 결과입니다. 여기 V1, V2 & V3가 열 이름으로 표시됩니다. enter image description hereSQL 서버에서 조합 n^n을 만드는 방법

도와주세요. 미리 감사드립니다.

+1

당신이'Vendors'을 선회 한 후 제품에 대한 'CROSS JOIN'을 수행 할 것 같습니다. – Dai

+0

예. 그러나 두 번째 테이블 열 값은 이미지에 표시되는 것처럼 한 열에 쉼표로 삽입합니다. –

+0

향후에 404가 될 링크를 사용하지 마십시오. –

답변

1

이 시도 :

-- DROP TABLE Vendors, Products 
CREATE TABLE Vendors (Vendor VARCHAR(10) PRIMARY KEY) 
CREATE TABLE Products (Product VARCHAR(10) PRIMARY KEY) 
GO 
INSERT INTO dbo.Vendors VALUES ('V1'),('V2'),('V3') 
INSERT INTO dbo.Products VALUES ('1'),('2'),('3') 

DECLARE @SQL VARCHAR(8000)=(
    SELECT 'SELECT '+SUBSTRING(CONVERT(VARCHAR(8000),(
     SELECT ','+SUBSTRING(CONVERT(VARCHAR(8000),(
      SELECT '+CASE WHEN P'+Product+'='''+Vendor+''' THEN '''+Product+''' ELSE '''' END' 
      FROM dbo.Products 
      FOR XML PATH(''), TYPE 
     )),2,8000)+' AS '+Vendor 
     FROM dbo.Vendors 
     FOR XML PATH(''),TYPE 
    )),2,8000) 
    +' FROM '+SUBSTRING(CONVERT(VARCHAR(8000),(
     SELECT ',(VALUES '+SUBSTRING(CONVERT(VARCHAR(8000),(
      SELECT ',('''+Vendor+''')' 
      FROM dbo.Vendors 
      FOR XML PATH (''), TYPE 
     )),2,8000)+') P'+Product+' (P'+Product+')' 
     FROM dbo.Products 
     FOR XML PATH(''), TYPE 
    )),2,8000) 
) 
EXEC(@SQL) 

Razvan 보낸

+0

매우 감사합니다 ... –

+0

@AkhileshKumarGupta 솔루션을 이해하고 추가 요구 사항을 통합하기 위해이 솔루션을 적용 해보십시오. StackOverflow는 모든 작업을 수행 할 보드가 아닙니다. –

+0

다시이 솔루션에 대해 ..... 감사합니다. –