2012-05-04 2 views
0

내 목표는 Product_A 및 Product_B 표의 비슷한 열을 기반으로 한 열 이름의 결과를 검색하는 것입니다.표 간의 비교를 기반으로하는 열의 이름을 얻으십시오

SQL 서버에서 Excel, Notepad 또는 Table의 결과를 얻는 것이 중요하지 않습니다. 가장 중요한 것은 결과를 검색하는 것입니다.

수동 작업 사용량이 적은 계산을 기반으로 결과를 검색하는 방법을 모르겠습니다.

일부 기준은 당신에게 계정을 취할 필요 : 비슷한 수 동일한 데이터 타입과 이름을 가져야합니다

  • 열 나는 열에서 데이터를 검색에 interrested 아니에요
  • 테이블은 기본 레벨에서 작성됩니다. 실제로 테이블은 200 열을 사용합니다.

표는 SQL 서버에 2008 R2

TABLE Product_A 
(
    ProductID INT, 
    ProductName VARCHAR(100), 
    Rate MONEY, 
    Action INT, 
    MapINT, 
) 


TABLE Product_B 
(
    ProductID INT, 
    Count INT, 
    ProductName VARCHAR(100), 
    Rate MONEY 
) 



Requested result 

     ProductID INT, 
     ProductName VARCHAR(100), 
     Rate MONEY, 
+0

몇 가지 샘플 데이터와 예상 결과를 게시 할 수 있습니까? 두 테이블의 제품을 원하십니까? 요금이 다른 경우 어떤 요금을 원하니? – Taryn

답변

1

이를 쿼리는 두 테이블을 비교하여 동일한 데이터 형식의 같은 이름의 열만 반환합니다. 데이터베이스 전체에서 모든 일치 항목을 찾으려면 t1.name = 상태를 주석 처리하십시오.

select 
     t1.name TableName, 
     c1.name ColumnName, 
     types.name, 
     c1.max_length, 
     c1.precision, 
     c1.scale 
from sys.columns c1 
inner join sys.columns c2 
    -- Condition to join columns - same name, type, length, precision and scale 
    on c1.name = c2.name 
    and c1.system_type_id = c2.system_type_id 
    and c1.max_length = c2.max_length 
    and c1.precision = c2.precision 
    and c1.scale = c2.scale 
    -- Exclude template table 
    and c1.object_id <> c2.object_id 
inner join sys.tables t1 
    on c1.object_id = t1.object_id 
inner join sys.types 
    on c1.system_type_id = types.system_type_id 
inner join sys.tables t2 
    on c2.object_id = t2.object_id 
where t2.name = 'Product_B' 
    -- remove if you want to search for matches in all tables 
    and t1.name = 'Product_A' 

확인 sys.columnssys.tables에 대한 문서.

0

귀하의 요구 사항은 없습니다 분명하지만 당신은 당신에게 제품 정보를 제공합니다 두 테이블에서 데이터를 얻을 수 있도록 당신은 UNION 참조 될 수있다

OP를 편집하고 샘플 데이터와 기대되는 결과를 게시 할 수 있다면 쿼리를 명확히 할 수 있습니다.

당신이 표 A 또는 B의 데이터를 원하는 테이블을 알고 있다면, 당신은이 제품 이름에 가입 할 수 있지만, 당신은 당신이 원하는 속도 및 제품 이드가 결정해야합니다

SELECT a.ProductId 
    , a.ProductName 
    , a.Rate 
FROM Product_A a 
JOIN Product_B b 
    ON a.ProductName = b.ProductName 
관련 문제