2011-07-14 59 views
0

我有2臨時表[Description][Institution],我想這兩個在一張表。SQL Server另一個簡單的問題


他們都表看起來像這樣:

表1; #T1

|Description| 
blabla 
blahblah 
blagblag 

表2; #T2

|Institution| 
Inst1 
Inst2 
Inst3 

我想這樣說:

表3; #T3

|Description|  |Institution| 
    blabla    Inst1 
    blahblah   Inst2 
    blagblag   Inst3 

它們已經排序。

我只是需要讓他們彼此相鄰..

上次我問的是什麼幾乎是相同的。

我用這個查詢

Create Table #T3 
( 
    [From] Datetime 
    ,[To] Datetime 
) 

INSERT INTO #T3 
    SELECT #T1.[From]  
     , MIN(#T2.[To]) 
    FROM #T1 
    JOIN #T2 ON #T1.[From] < #T2.[To] 
    GROUP BY #T1.[From] 

Select * from #T3 

它確實的日期值的工作,但它不會在這裏工作? :s

謝謝。

+2

你真的應該開始使用鑰匙...... – Jacob

+0

我會嘗試,現在 – Gigli

+0

是'blagblag'在連接到'Inst3'或某種方式可以將'blagblag'與'Inst2'配對嗎? –

回答

2

有一件我關心的事情是你說這些值「已經排序」。實際上沒有默認的排序順序 - 如果您沒有指定排序順序,那麼您將受SQL Server的控制,以確定數據返回的順序。下面的解決方案假定有一些方法可以對數據進行排序,以便記錄「匹配」(使用ORDER BY子句)。

希望這有助於

約翰

-- Table 1 test data 
Create Table #T1 
(
    [Description] nvarchar(30) 
) 
INSERT INTO #T1 ([Description]) VALUES ('desc1') 
INSERT INTO #T1 ([Description]) VALUES ('desc2') 
INSERT INTO #T1 ([Description]) VALUES ('desc3') 

-- Table 2 test data 
Create Table #T2 
(
    [Institution] nvarchar(30) 
) 
INSERT INTO #T2 (Institution) VALUES ('Inst1') 
INSERT INTO #T2 (Institution) VALUES ('Inst2') 
INSERT INTO #T2 (Institution) VALUES ('Inst3') 

-- Create table 3 
Create Table #T3 
( 
    [Description] nvarchar(30), 
    [Institution] nvarchar(30) 
); 


-- Use CTE2 to add row numbers to the data; use the row numbers to join the tables 
-- you must specify the sort order for the data in the tables 
WITH CTE1 (Description, RowNum) AS 
(
    SELECT [Description], ROW_NUMBER() OVER(ORDER BY [Description]) as RowNum 
    FROM #T1 
), 
CTE2 (Institution, RowNum) AS 
(
    SELECT Institution, ROW_NUMBER() OVER(ORDER BY Institution) as RowNum 
    FROM #T2 
) 
INSERT INTO #T3 
SELECT CTE1.Description, CTE2.Institution 
FROM CTE1 
LEFT JOIN CTE2 ON CTE1.RowNum = CTE2.RowNum 


Select * from #T3