2016-09-02 3 views
0

저는 여기에 새로 와서 질문이 있습니다. 당신이 줄 수있는 도움에 감사드립니다.TSQL 데이터 세트 완성

불완전한 데이터 집합이 있는데 두 번째 집합의 값을 기준으로 데이터 집합을 완성하려고합니다.

MSSQL 2014를 사용하여 어떻게해야합니까?

이 코드 예제 데이터 세트를 생성하는 것입니다 :

DECLARE @T1 TABLE (K1 INT , K2 INT, K3 INT) 
DECLARE @T2 TABLE (K4 INT) 

INSERT INTO @T1 (k1,k2,k3) VALUES 
    (3, 226, 5),(3, 226, 10 
),(3, 226, 15),(3, 226, 20 
),(3, 312, 5),(3, 312, 10 
),(3, 312, 30),(4, 280, 20 
),(4, 280, 25),(4, 280, 50 
),(4, 280, 55) 

INSERT INTO @T2 VALUES (0),(5),(10),(15),(20),(25),(30),(35),(40),(45),(50),(55) 

SELECT * FROM @T1 
SELECT * FROM @T2 

어떻게이 결과에받을 수 있나요?

3 226 5 
3 226 10 
3 226 15 
3 226 20 
3 226 25 
3 226 30 
3 226 35 
3 226 40 
3 226 45 
3 226 50 
3 226 55 
3 312 5 
3 312 10 
3 312 15 
3 312 20 
3 312 25 
3 312 30 
3 312 35 
3 312 40 
3 312 45 
3 312 50 
3 312 55 
4 280 0 
4 280 5 
4 280 10 
4 280 15 
4 280 20 
4 280 25 
4 280 30 
4 280 35 
4 280 40 
4 280 45 
4 280 50 
4 280 55 

모든 키 (t1.k1, t1.k2) 미리, t1.k1로부터 정확한 값을 제공 누락 된 행 (t2.k4과하지에 t1.k3) t1.k2

확실히 추가 용

+0

원하는 결과를 얻으려면 최선의 노력을 다할 수있는 코드를 알려주시겠습니까? –

답변

1

두 번째 데이터 세트가 완전 보장과 첫 번째 K1 및 K2 열이 당신이 완전히 K3에 무엇을 무시할 수 K4 각 행에 대해 동일하게 보장하는 경우 :

DECLARE @T1 TABLE (K1 INT , K2 INT, K3 INT) 
DECLARE @T2 TABLE (K4 INT) 

INSERT INTO @T1 (k1,k2,k3) VALUES 
    (3, 226, 5),(3, 226, 10 
),(3, 226, 15),(3, 226, 20 
),(3, 312, 5),(3, 312, 10 
),(3, 312, 30),(4, 280, 20 
),(4, 280, 25),(4, 280, 50 
),(4, 280, 55) 

INSERT INTO @T2 VALUES (0),(5),(10),(15),(20),(25),(30),(35),(40),(45),(50),(55) 

SELECT * 
FROM (select distinct k1, k2 from @T1) T1 
    cross join @T2 
order by 1,2,3 
0
이 같은

윌 뭔가 :

SELECT DISTINCT K1, K2, K4 FROM @T2 T2 cross JOIN @T1 T1 
ORDER BY K1 
0

크로스 조인을 사용하여 작업을 수행 할 수 있습니다.

select t1.k1, t1.k2, t2.k4 
from (select distinct k1, k2 from @t1) t1 cross join 
    @t2 t2;