如何在hive中将两个表连接在列中具有唯一值

时间:2016-05-20 12:02:26

标签: sql hadoop hive

我在hive,table1和table2中有两个表,其中包含以下值:

TABLE1:........................................ TABLE2:
日期.................值.....................日期......... ............价值
#&39; 2016年1月1日' ....一个.......................' 2016年1月1日&# 39; .......... 2
#&39; 2016年1月1日' .... 3 .....................' 2016年1月1日' .......... 4个
' 2016年1月1日' .... 5

我需要连接两个表来创建第三个表(有三行):

日期....................... VALUE1 ...................... .....值2
' 2016年1月1日' ..........一个........................... ..... 2个
' 2016年1月1日' .......... 3 ........................... 。四个
' 2016-01-01' ..........五

我尝试了很多选项,但都没有。

任何想法。

1 个答案:

答案 0 :(得分:0)

DECLARE @table1 TABLE ([Date] Date, [Value] VarChar(10))
DECLARE @table2 TABLE ([Date] Date, [Value] VarChar(10))

INSERT INTO @table1([Date], [Value])
SELECT '2016-01-01', 'one'
UNION ALL
SELECT '2016-01-01', 'three'
UNION ALL
SELECT '2016-01-01', 'five'

INSERT INTO @table2([Date], [Value])
SELECT '2016-01-01', 'two'
UNION ALL
SELECT '2016-01-01', 'four'

SELECT [Date]   = t1.[Date],
       [Value1] = t1.[Value],
       [Value2] = t3.[Value]
FROM
(SELECT [Date]  = t.[Date],
        [Value] = t.[Value],
        [ID]    = ROW_NUMBER() OVER(ORDER BY t.[Date] DESC)
 FROM @table1 t) t1
OUTER APPLY
(
   SELECT TOP 1 t2.[Value]
   FROM
   (SELECT [Date]  = t.[Date],
           [Value] = t.[Value],
           [ID]    = ROW_NUMBER() OVER(ORDER BY t.[Date] DESC)
    FROM @table2 t) t2
   WHERE t2.[Date] = t1.[Date] 
     AND t2.[ID]   = t1.[ID]
) t3