我有2个临时表[Description]
和[Institution]
,我希望将这两个表放在一个表中。
它们都是这样的表:
表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
它确实适用于日期值,但它在这里不起作用? :■
谢谢。
答案 0 :(得分: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