[英]Left Join on the same table basics
Im trying to create the following table: 我正在尝试创建下表:
JpId | JpName | JpValue | JpEndvalue
JpId | JpName | JpValue | JpEndvalue
Where JpEndValue is JpValue (TimeStamp + 1day) from the same table but I get this result: JpId | JpName | JpValue | JpEndvalue
其中,JpEndValue是来自同一表的JpValue(时间戳+ 1天),但我得到以下结果:
Table: 表:
JpId JpName JpTimeStamp JpValue
1 MAGIC 2017-06-15 151
2 BASIC 2017-06-15 152
3 MINI 2017-06-15 153
4 SUPER 2017-06-15 154
5 MAGIC 2017-06-16 161
6 BASIC 2017-06-16 162
7 MINI 2017-06-16 163
8 SUPER 2017-06-16 164
Query 询问
SELECT jp1.JpId
,jp1.JpName
,jp1.JpValue
,jp2.JpValue AS 'JpEndValue'
FROM jackpot_web_report jp1
LEFT JOIN jackpot_web_report jp2
ON jp2.JpTimeStamp = '2017-06-16'
WHERE jp1.JpTimeStamp = '2017-06-15';
Result: 结果:
1 MAGIC 151 161
1 MAGIC 151 162
1 MAGIC 151 163
1 MAGIC 151 164
2 BASIC 152 161
2 BASIC 152 162
2 BASIC 152 163
2 BASIC 152 164
3 MINI 153 161
3 MINI 153 162
3 MINI 153 163
3 MINI 153 164
4 SUPER 154 161
4 SUPER 154 162
4 SUPER 154 163
4 SUPER 154 164
Expected result: 预期结果:
1 MAGIC 151 161
2 BASIC 152 162
3 MINI 153 163
4 SUPER 154 164
I seems you missed jp2.JpName = jp1.JpName
condition: 我似乎您错过了jp2.JpName = jp1.JpName
条件:
SELECT jp1.JpId
,jp1.JpName
,jp1.JpValue
,jp2.JpValue AS 'JpEndValue'
FROM jackpot_web_report jp1
LEFT JOIN jackpot_web_report jp2
ON jp2.JpTimeStamp = '2017-06-16' AND jp2.JpName = jp1.JpName
WHERE jp1.JpTimeStamp = '2017-06-15';
you can also add DATEADD
in join condition: 您还可以在DATEADD
条件中添加DATEADD
:
SELECT jp1.JpId
,jp1.JpName
,jp1.JpValue
,jp2.JpValue AS 'JpEndValue'
FROM jackpot_web_report jp1
LEFT JOIN jackpot_web_report jp2
ON jp2.JpTimeStamp = DATEADD(DAY, 1, jp1.JpTimeStamp) AND jp2.JpName = jp1.JpName
WHERE jp1.JpTimeStamp = '2017-06-15';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.