قرار دادن شرط در دستور Select در SQL Server
باسلام و احترام خدمت دوستان عزیز ، من یک جدول به نام T دارم که دارای فیلد های Cod و Name و Travel هست. من دستور را به صورت زیر نوشتم
SELECT COUNT(CASE WHEN Travel= N'مشهد' THEN 1 END) , COUNT(CASE WHEN Travel= N'شمال' THEN 1 END) ,name ,Cod from t where GROUP BY name ,cod ORDER BY name ASC
خروجی مثلا میشه
کد****نام****شمال****مشهد
1****علی****2****1
2****محمد****3****0
3****رضا****1****2
4****شایان****3****4
حالا من می خواهم از خروجی بالا افرادی نمایش داده شوند که مثلا 3 نوبت شمال رفته باشند ، مثلا خروجی به صورت زیر باشه
کد****نام****شمال****مشهد
2****محمد****3****0
4****شایان****3****4
چطوری باید بگویم که ردیفهایی را نشان بده که ستون سوم آنها برابر با عدد 3 باشد. باتشکر از شما
4 پاسخ
فکر کنم بشه با دستور Having این کار رو کرد
SELECT COUNT(CASE WHEN Travel= N'مشهد' THEN 1 END) As C1, COUNT(CASE WHEN Travel= N'شمال' THEN 1 END) As C2, name ,Cod from t GROUP BY name ,cod Having C2>3 ORDER BY name ASC
البته من توی کد به دو ستون اول select هم اسم دادم
لطفا نتیجه اش رو بهم بگید
ممنون
با سلام و تشکر
اگر بنویسم Having C2>3 کد خطای Invalid column name 'c2' را میده
و اگر بنویسم Having 'C2'>3 خطای زیر را میده
Conversion failed when converting the varchar value 'c2' to data type int.
ممنون دستور Having باید به این صورت استفاده بشه در این کد
SELECT COUNT(CASE WHEN Travel= N'مشهد' THEN 1 END) As C1, COUNT(CASE WHEN Travel= N'شمال' THEN 1 END) As C2, name ,Cod from t GROUP BY name ,cod Having COUNT(CASE WHEN Travel= N'شمال' THEN 1 END)>3 ORDER BY name ASC
بله اشتباه از من بود ، برای Having باید با کل عبارت بنویسید.