-2
votes

Requête pour trouver des comptes avec des mois spécifiés

Je veux extraire ces identifiants de compte qui sont présents en mai et en juin, mais pas en juillet. J'ai des données pendant 6 mois

J'ai essayé d'utiliser la condition (et / non) xxx

Je reçois toujours des identifiants de compte qui, en juillet

sql

6 commentaires

Quel SGBD utilisez-vous? (En ce qui concerne la date / l'heure, de nombreux produits sont loin d'ANSI SQL conformes.)


Type de données Data_Month de colonnes?


Voulez-vous dire les deux mai et juin, ou c'est juste l'un d'entre eux bien? Montrez-nous quelques données de table d'échantillons et le résultat attendu - tout comme texte formaté, pas d'images. Et jetez un coup d'œil à Stackoverflow.com/help/minimal-reproductible-example avant de commencer.


Oui je voudrais les deux mai et juin mais pas juillet


Veuillez noter que la frappe dans toutes les casques est considérée comme impolie et considérée comme crie.


On dirait que vous devez faire une division relationnelle. Il y a un excellent article à ce sujet ici: Divisé Nous sommes Stand: le SQL de la division relationnelle


5 Réponses :


0
votes

Vos formats de date ressemblent à Oracle, donc je répondrai à cette base de données.

L'idée est d'utiliser l'agrégation conditionnelle: p>

SELECT ACCOUNT_ID, DATA_MONTH
FROM DATA1
WHERE DATA_MONTH >= DATE '2018-05-01' AND
      DATA_MONTH < DATE '2018-08-01'
GROUP BY ACCOUNT_ID
HAVING COUNT(DISTINCT DATA_MONTH) = 2 AND
       MAX(DATA_MONTH) < DATE '2018-07-01';


0 commentaires

0
votes

L'utilisation de la fonction SQL Server Month vous donne un exemple compréhensible de la manière de résoudre ce problème.

SELECT ACCOUNT_ID
FROM DATA1
WHERE MONTH(DATA_MONTH) in (5,6) AND YEAR(DATA_MONTH) = 2018 AND MONTH(DATA_MONTH) NOT IN (7) 
GROUP BY ACCOUNT_ID


1 commentaires

On dirait que tu as manqué le " mais pas en juillet ".



1
votes

Vous pouvez mettre les conditions dont vous avez besoin dans un avoir code> Clause: xxx pré>

Je suppose que dans votre SGBM, il existe une fonction comme mois () code> pour extraire le mois à partir de la date. de
Si vous souhaitez vérifier l'année aussi, vous pouvez le faire dans chaque état. Vous devez donc passer à: P>

CASE WHEN MONTH(DATA_MONTH) = 7 AND YEAR(DATA_MONTH) = 2018 THEN 1 ELSE 0


0 commentaires

0
votes
SELECT ACCOUNT_ID, DATA_MONTH
FROM DATA1
WHERE MONTH(DATA_MONTH) =5 AND MONTH(DATA_MONTH) = 6
GROUP BY DATA_MONTH

0 commentaires

0
votes
SELECT ACCOUNT_ID, DATA_MONTH
FROM DATA1
WHERE MONTH(DATA_MONTH)  BETWEEN 5  AND  6
GROUP BY Year(DATA_MONTH),month(DATA_MONTH)

0 commentaires