PDA

View Full Version : حرفه ای: اصلاح کوئری



niknam_mh
سه شنبه 14 مرداد 1393, 08:42 صبح
دوستان سلام
یه کوئری مثل زیر داریم که مقدار جمع فیلدی رو برای شش ماه اول سال محاسبه می کنه:

SELECT kid, flname, father,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/01') AND (dbo.t_keshavarz.kid = kid)) AS فروردین,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/02') AND (dbo.t_keshavarz.kid = kid)) AS اردیبهشت,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/03') AND (dbo.t_keshavarz.kid = kid)) AS خرداد,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/04') AND (dbo.t_keshavarz.kid = kid)) AS تیر,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/05') AND (dbo.t_keshavarz.kid = kid)) AS مرداد,
(SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/06') AND (dbo.t_keshavarz.kid = kid)) AS شهریور
FROM dbo.t_keshavarz
WHERE ((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_1
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/01') AND (dbo.t_keshavarz.kid = kid)) <> 0) OR
((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/02') AND (dbo.t_keshavarz.kid = kid)) <> 0) OR
((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/03') AND (dbo.t_keshavarz.kid = kid)) <> 0) OR
((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_1
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/04') AND (dbo.t_keshavarz.kid = kid)) <> 0) OR
((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/05') AND (dbo.t_keshavarz.kid = kid)) <> 0) OR
((SELECT CAST(SUM(mshir) AS numeric(10, 2)) AS Expr1
FROM dbo.t_moein AS t_moein_2
WHERE (kidshir = 1) AND (LEFT(tarikh, 7) = '1393/06') AND (dbo.t_keshavarz.kid = kid)) <> 0)

که خروجی مثل تصویر زیر داره:


122003


که خروجی برای برج 6 خالی هست چه کار کنیم که وقتی ستون 6 برای همه افراد خالی هست اون رو نشون نده؟