2017-06-19 12 views
1

Im der folgenden Tabelle zu erstellen versuchen:links auf den gleichen Tisch Grundlagen Join

JpId | JpName | JpValue | JpEndvalue Wo JpEndValue ist JpValue (Timestamp + 1 Tag) aus derselben Tabelle, aber ich erhalte dieses Ergebnis:

Tabelle:

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 

Abfrage

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'; 

Re Sult:

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 

Erwartetes Ergebnis:

1 MAGIC 151 161 
2 BASIC 152 162 
3 MINI 153 163 
4 SUPER 154 164 

Antwort

2

ich Ihnen jp2.JpName = jp1.JpName Zustand verpasst scheint:

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'; 

Sie auch hinzufügen können DATEADD in Joinbedingung:

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'; 
Verwandte Themen