2013-01-16 2 views
0

Je suis actuellement un débutant en langage de requête SQL et je suis actuellement du mal à obtenir la requête suivante au travail:Comment utiliser la clause COUNT avec OVER?

USE test; 
GO 
SELECT deal_type, price_type, 
    COUNT(deal_type) OVER(PARTITION BY deal_type) AS "Count1" 
,COUNT(price_type) OVER(PARTITION BY deal_type) AS "Count2" 
FROM deal_price 
WHERE deal_type = "rmbs", "Abs" 
GO 

Je reçois actuellement erreur (« msg 156 »)

la sortie désirée regarderait semblable à ce qui suit:

--deal_type, price_type, count_1 
--rmbs, talk, 23 
--rmbs, cvr, 40 
--abs, talk, 40 

Toute aide serait grandement appréciée. Je vous remercie.

+0

Vous avez un supplément « » après type_de_tarification – AbZy

+0

Merci beaucoup pour votre aide. Je n'arrive toujours pas à obtenir la requête pour atteindre la sortie souhaitée. Son lecture en cours rmbs comme invalide. Toute aide sera la bienvenue. – user1574185

+0

Utilisez la guillemande simple au lieu de double, comme dans «rmbs» au lieu de «rmbs», ceci est également applicable pour le 'Count1' – AbZy

Répondre

0

Utilisez le In-clause:

USE test; 
GO 
SELECT deal_type, price_type, 
COUNT(deal_type) OVER(PARTITION BY deal_type) AS 'Count1', 
COUNT(price_type) OVER(PARTITION BY deal_type) AS 'Count2' 
FROM deal_price 
WHERE deal_type in ('rmbs', 'Abs') 
GO 
+0

chère @Absi, merci beaucoup pour votre aide. cependant, la sortie est soudainement affichée comme des lignes dupliquées telles que "rmbs, talk, 200", "rmbs, talk, 200", "rmbs, cvr, 30". Au lieu de cela, la sortie doit être comme suit: "rmbs, talk, 200", "rmbs, cvr, 30", "Abs, talk, 30", etc – user1574185

+1

@ user1574185 avez-vous des lignes en double dans votre table deal_price et vous voulez obtenir des valeurs distinctes? – AbZy

+0

Excuses d'être fardeau, mais oui ajouté la clause distincte en tant que j'ai des doublons dans la table. Merci beaucoup pour votre aide @absi. J'apprécie vraiment votre temps et votre aide. Merci un million. – user1574185

Questions connexes