Mon affectation consiste à obtenir le prénom, le deuxième prénom et le nom de famille de tous les clients ayant reçu une commande avant '2012-09-30' et après "2013-09-30". J'utilise l'aventureworks2017 sous la forme d'un échantillon dB
Table: Sales.SalesorderHeader P>
SELECT DISTINCT person_table.FirstName, person_table.MiddleName, person_table.LastName, count(*) as Total_Instanses FROM Sales.SalesOrderHeader as sales_order_table inner join Sales.Customer as sales_customer_table on (sales_customer_table.CustomerID = sales_order_table.CustomerID) inner join Person.Person as person_table on (person_table.BusinessEntityID = sales_customer_table.PersonID) WHERE sales_order_table.OrderDate NOT BETWEEN '2012-09-30' AND '2013-06-30' GROUP BY person_table.FirstName, person_table.MiddleName, person_table.LastName HAVING count(*) >= 2
3 Réponses :
Essayez ceci, je ne suis pas sûr que si cela fonctionne, je n'ai pas le jeu de données à tester, mais il faut
SELECT DISTINCT person_table.FirstName, person_table.MiddleName, person_table.LastName FROM Sales.SalesOrderHeader as sales_order_table inner join Sales.Customer as sales_customer_table on (sales_customer_table.CustomerID = sales_order_table.CustomerID inner join Person.Person as person_table on (person_table.BusinessEntityID = match_result.PersonID) WHERE sales_order_table.OrderDate NOT BETWEEN '2012-09-30' AND '2013-06-30'
Vous pouvez simplement utiliser ci-dessous. De plus, votre filtre des dates n'était pas correct.
SELECT DISTINCT p.FirstName,
p.MiddleName,
p.LastName
FROM Sales.SalesOrderHeader as s
INNER JOIN Sales.Customer as c
ON c.CustomerID = s.CustomerID
INNER JOIN Person.Person as p
ON p.BusinessEntityID = c.PersonID)
WHERE s.OrderDate >= '2012-09-30' <----- add this
AND s.OrderDate <= '2013-06-30' ) ---- and this
Mon affectation consiste à obtenir le prénom, le deuxième prénom et le nom de famille de tous les clients ayant reçu une commande avant '2012-09-30' et après "2013-09-30". p>
une méthode utilise l'agrégation: p>
xxx pré> Je dirai que cette condition a l'air suspecte: p>
xxx pré> Toutefois, est ce que vous utilisez dans votre requête. Je m'attendrais à ce que la table de la personne ait une pièce d'identité appelée quelque chose comme
PersonID code>. P> blockQquote>
Nouirement pas pour, c'est affaires
Schématiquement:
Sélectionnez une personne à partir de Sales Rejoignez les personnes rejoignent les clients Groupe de clients par personne ayant compté (cas lorsque la date <'2012-09-30' puis 1 extrémité)> 0 et compte (cas lorsque la date> '2013-09-30' Puis 1 extrémité)> 0 code>Pensez à utiliser un
de la clause code> avec uniquementpersonne.person code> et aoù code> clause avecexiste code> sous-requêtes corrélées. Cela évitera le besoin dedistinct code> aussi.