簡體   English   中英

在同一表基礎上左聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM