تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

قرار دادن شرط در دستور 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 باشد. باتشکر از شما

پرسیده شده در 1395/02/20 توسط

4 پاسخ

1

فکر کنم بشه با دستور 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 هم اسم دادم

لطفا نتیجه اش رو بهم بگید

ممنون

پاسخ در 1395/02/20 توسط
0

با سلام و تشکر

اگر بنویسم Having C2>3 کد خطای Invalid column name 'c2' را میده

و اگر بنویسم Having 'C2'>3 خطای زیر را میده

Conversion failed when converting the varchar value 'c2' to data type int.

پاسخ در 1395/02/20 توسط
1

ممنون دستور 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

پاسخ در 1395/02/20 توسط
0

بله اشتباه از من بود ، برای Having باید با کل عبارت بنویسید.

پاسخ در 1395/02/20 توسط

پاسخ شما