2017-10-09 6 views
0

S'il vous plaît voir cela si possible dans SQL Server:comparer si une date est comprise entre deux dates dans SQL Server

J'ai deux tables avec les attributs suivants:

Tableau A

AId prm_code dateTrom  dateTo 
1 sql/mn/01 01/01/2017 30/03/2017 
2 sql/mn/01 01/04/2017 30/06/2017 

Tableau B

BId prm_code qty price tDate 
1 sql/mn/01 10 10  03/01/2017 
2 sql/mn/01 1  11  03/01/2017 
3 sql/mn/01 12 100  05/01/2017 
4 sql/mn/01 5  50  10/02/2017 
5 sql/mn/01 20 10  15/03/2017 

Maintenant, je voudrais créer une requête pour obtenir le AId du tableau A et toutes les autres lignes du tableau B comme suit lorsque le TDate du tableau B se situe entre dateFrom et dateTo dans le tableau A

BId prm_code qty price tDate  AId 
1 sql/mn/01 10 10  03/01/2017 1 
2 sql/mn/01 1  11  03/01/2017 1 
3 sql/mn/01 12 100  05/01/2017 1 
4 sql/mn/01 5  50  10/02/2017 1 
5 sql/mn/01 20 10  15/03/2017 1 

Merci

+1

[xkcd PSA ISO 8601] (https://xkcd.com/1179/) – SqlZim

+1

Pourquoi 31 Mars vous à sauter? Qu'avez-vous essayé jusqu'à présent? S'il vous plaît poster votre requête. –

Répondre

1

Oui, vous pouvez utiliser REJOIGNEZ avec ENTRE

SELECT B.BId, B.price, B.qty, B.prm_code, B.tDate, A.AId 
FROM [dbo].[TableA] AS A 
JOIN [dbo].[TableB] AS B  
    ON B.tDate BETWEEN A.dateFrom AND A.dateTo 
+0

Beaut, jamais vu avant, SUR ... ENTRE, j'ai ajouté une rangée supplémentaire à la Table B juste pour voir et il a produit AID 2 ce qui est bon. – russ