sql - 如何在列中具有唯一值的配置单元中联接两个表

标签 sql hadoop hive

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

表1:..................................表2:
日期.....值..日期......... ............值
'2016-01-01'.. one .......................'2016-01-01'........ ..二
'2016-01-01'....三个.....................'2016-01-01'..........四
'2016-01-01'.... 5

并且我需要将两个表连接起来以创建第三个表(具有三行):

日期.......................值1 ......................... ..value2
'2016-01-01'..... one ................................二
'2016-01-01'...............三.....................四
'2016-01-01'.........五个

我尝试了许多选择,但没有一个起作用。

任何的想法。

最佳答案

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

关于sql - 如何在列中具有唯一值的配置单元中联接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346257/

相关文章:

scala - 学习mapreduce,SQL命令如何翻译成mapreduce数据流。字数统计示例不能满足我的理解。

sql - 我可以用逗号将多行分隔为一列吗?

sql - 如何与另一个表并排显示外键?

hadoop - 使用java代码在hadoop中读取csv文件格式

hadoop - Hive QL在SQL Workbench中运行正常,但在Tableau上失败

hive - 配置单元中的分区列

sql - psql 列不存在但确实存在

sql - SQL Server 如何只更新 MAX 列

hadoop - Hadoop 从哪里获取 linux shell 用户名和组映射的用户名和组映射?

hadoop - 如何依次运行 Pig 作业