-1
votes

SQL- ITERE dans une liste des valeurs de la clause

J'ai une table comme si:

SELECT * 
FROM Table
Where item_id in (1,2,3) and order_date between (("01-01-2018", "02-02-2018"),
                                                  ("01-02-2019", "03-22-2020"),
                                                  ("11-15-2018", "12-04-2019"))

sql

1 commentaires

Bonjour, veuillez étiqueter une base de données que vous utilisez et ajoute également quels résultats vous attendez-vous après la requête. Merci!


3 Réponses :


0
votes

Utilisez ou : xxx

Notez que j'ai également corrigé les constantes de date afin de se conformer aux normes ISO. Dans certaines bases de données, vous devez procéder aux constantes de date avec la date mot-clé.


0 commentaires

2
votes

Voulez-vous réellement itérer em> ou de retourner simplement des résultats correspondants?

Son comme ceci pourrait être la direction que vous souhaitez utiliser: P>

SELECT item_id, SUM(order_qty)
  FROM Table
 WHERE (item_id = 1 AND order_date BETWEEN TO_DATE('01-01-2018', 'MM-DD-YYYY') AND TO_DATE('02-02-2018', 'MM-DD-YYYY'))
    OR (item_id = 2 AND order_date BETWEEN TO_DATE('01-02-2019', 'MM-DD-YYYY') AND TO_DATE('03-22-2020', 'MM-DD-YYYY'))
    OR (item_id = 3 AND order_date BETWEEN TO_DATE('11-15-2018', 'MM-DD-YYYY') AND TO_DATE('12-04-2019', 'MM-DD-YYYY'))
 GROUP BY item_id;


3 commentaires

@Brennancasey je ne comprends pas comment c'est l'oeuvre. Peut-on plaire à quelqu'un de m'expliquer? Ma réponse, parmi toutes ces trois, c'est le seul qui a un groupe par clause et cela ne le fait pas et là-bas, cela sera erroné. Ou il y a une autre base de données que je ne suis pas au courant de l'endroit où cela fonctionnera, mais il dit que c'est un exemple Oracle ...


Bon point, j'ai oublié d'inclure un groupe par clause, je vais résoudre ce problème. Mais je pense que l'obstacle principal ici comprenait comment utiliser ou avec plusieurs conditions groupées ensemble.


Salut @wweicker gentille. Eh bien, je suis sûr que (je crois) toutes les aides devraient être apprenues (il pose un total de ... et itérale à travers une liste des valeurs de la clause ...) comme le groupe et la somme des informations ... c'est pourquoi il y a pourquoi il y a accepter et voter. Peut-être que je regarde le vote et accepte de mauvaise manière :)



1
votes

Si le total de chaque article est ce que vous recherchez avec ceci: "Total Order_qty ..." Je crois que c'est ce dont vous avez besoin:

select item_id
       , sum(order_qty) total
from test
where (item_id = 1 and order_date BETWEEN '2019-01-01' AND '2019-06-02')
or (item_id = 2 and order_date BETWEEN '2019-01-02' AND '2018-03-22')
or (item_id = 3 and order_date BETWEEN '2018-11-15' AND '2018-04-12')
group by item_id ;


1 commentaires

Salut @brennancasey, ce serait une sorte de vous si vous pouviez nous donner des commentaires? Merci! :)