我是数据库新手。检查Sql Fiddle。目前我获得的列数多于我需要的数量(检查小提琴输出)。
Select
Test1.email1,
Test1.dt1,
Test2.StepsPerDay,
Test2.DistancePerDay
From
Test1
Inner join
Test2 ON Test1.dt1 = Test2.dt2
order by
dt1
我想要的输出是
╔════════╦════════════╦═════════════╦════════════════╗
║ Email1 ║ Dt1 ║ StepsPerDay ║ DistancePerDay ║
╠════════╬════════════╬═════════════╬════════════════╣
║ abc ║ 2015-01-15 ║ 500 ║ 100 ║
║ abc ║ 2015-01-19 ║ 600 ║ 100 ║
║ xyz ║ 2015-05-13 ║ 200 ║ 100 ║
║ xyz ║ 2015-05-14 ║ 200 ║ 100 ║
║ xyz ║ 2015-05-15 ║ 200 ║ 100 ║
║ xyz ║ 2015-05-16 ║ 200 ║ 100 ║
║ xyz ║ 2015-05-17 ║ 200 ║ 100 ║
╚════════╩════════════╩═════════════╩════════════════╝
答案 0 :(得分:3)
您只匹配日期,但不匹配电子邮件。见下文:
Select
Test1.email1,
Test1.dt1,
Test2.StepsPerDay,
Test2.DistancePerDay
From Test1
Inner join Test2
ON Test1.email1=Test2.email2
and Test1.dt1 = Test2.dt2
order by dt1
答案 1 :(得分:1)
更好JOIN
(感谢dotnetkid),还有GROUP BY
:
select Test1.email1,
Test1.dt1,
SUM(Test2.StepsPerDay) as StepsPerDay,
SUM(Test2.DistancePerDay) as DistancePerDay
From Test1
Inner join Test2
ON Test1.dt1=Test2.dt2
and Test1.email1 = Test2.email2
group by Test1.email1, Test1.dt1
order by dt1
如果您还想在test2中找不到test1电子邮件/日期的结果,请切换到LEFT JOIN
而不只是JOIN
。