[英]Left Join on the same table basics
我正在嘗試創建下表:
JpId | JpName | JpValue | JpEndvalue
JpId | JpName | JpValue | JpEndvalue
其中,JpEndValue是來自同一表的JpValue(時間戳+ 1天),但我得到以下結果:
表:
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
詢問
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';
結果:
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
預期結果:
1 MAGIC 151 161
2 BASIC 152 162
3 MINI 153 163
4 SUPER 154 164
我似乎您錯過了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';
您還可以在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.