PDA

View Full Version : دستور count



Kubuntu
جمعه 04 مرداد 1392, 17:26 عصر
سلام!!

من نمی دونم چه کوئری باید بنویسم تا ستون telNumber تعداد تلفنهای یک مشتری را نشان دهد:

http://upload7.ir/images/25629494573965694232.png

کد خودم:

SELECT top 100 cg.name as [group] , ct.name as city,
c.pk, c.name as customer , c.[address] ,COUNT(c.pk) AS TelCount, t.tel
FROM (SELECT pk, name,[address], [customerGrp-FK], [city-Fk] FROM dbo.[customer]
WHERE name LIKE N'%'+ @value +'%' ) as c JOIN [customer-grp] as cg
ON c.[customerGrp-FK] = cg.pk
left JOIN [city-customer] as ct
ON ct.pk= c.[city-Fk]
left JOIN [tel-customer] t
ON c.pk =t.[customer-FK]
GROUP BY cg.name , ct.name ,
c.pk, c.name , c.[address] , t.tel

ORDER BY c.name ASC

محمد سلیم آبادی
جمعه 04 مرداد 1392, 17:36 عصر
از این کد استفاده کنید:


SELECT COUNT(*) OVER(PARTITION BY pk) AS TelNumber, *
FROM (your_query) AS d

محمد سلیم آبادی
جمعه 04 مرداد 1392, 17:42 عصر
خطای:
Msg 102, Level 15, State 1, Procedure customer_Names_Search_SP, Line 14
Incorrect syntax near '<'.
Msg 156, Level 15, State 1, Procedure customer_Names_Search_SP, Line 16
Incorrect syntax near the keyword 'as'.
لطفا با عجله پست نکنید!
این پیغام را باید همراه با کدتان ارسال کنید نه به تنهایی.

ahmad.karimpour
جمعه 18 مرداد 1392, 23:54 عصر
با سلام
ستون TelNumber را Count کرده و سپس بر مبنای customer گروه بندی (group by) کنید.

به طور مثال جدول زیر را در نظر بگیرید :


http://axgig.com/images/81026916035212289836.jpg

کوئری اش میشود :



SELECT Customer,COUNT(Phone) AS PhoneCounter
FROM Person
GROUP BY Customer

و خروجی اش می شود :


http://axgig.com/images/44710957349754792965.png

محمد سلیم آبادی
شنبه 19 مرداد 1392, 02:42 صبح
اگر ستون Phone همیشه دارای مقدار هست (nullable نیست) میتونید به جای Phone داخل تابع COUNT از * استفاده کنید.