الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة فى هذا الكود

بدأه it.magdy في 5 مارس 2016 · 7 رد · 726 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اواجه مشكلة فى هذا الكود 

SELECT distinct Client,
CASE WHEN   Category ='sl' THEN   sum(Cartonex)END AS "ملح", 
CASE WHEN  Category='sh' THEN sum(Cartonex)END AS "سكر",
CASE WHEN  Category='ol' THEN sum(Cartonex)END AS "زيت",
CASE WHEN  Category='te' THEN sum(Cartonex)END AS "شاى"
FROM ALL_ProductSfO WHERE DATE='2016-03-01'
GROUP BY Client, Category
ORDER BY (Client) ASC;

حيث ان النتائج تخرج على الشكل التالى

ولا اريد ان يتكرر اسم العميل ويتم تجميع بيانات مسحوبات العميل بدون null

Client	ملح	سكر	زيت	شاى	دقيق
الاطباء	NULL	NULL	2490	NULL	NULL
الاطباء	NULL	1301	NULL	NULL	NULL
الاطباء	288	NULL	NULL	NULL	NULL
البرديسى	NULL	NULL	96	NULL	NULL
البرديسى	NULL	141	NULL	NULL	NULL
البنا	NULL	NULL	NULL	NULL	NULL
البنا	NULL	96	NULL	NULL	NULL
−1
#2

قم بتغير هذا السطر

GROUP BY Client, Category
GROUP BY Client
#3

Msg 8120, Level 16, State 1, Line 2
Column 'ALL_ProductSfO.Category' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

#4

جرب هذا

SELECT Client,
CASE WHEN  Category ='sl' THEN   sum(Cartonex)END AS "ملح", 
CASE WHEN  Category='sh' THEN sum(Cartonex)END AS "سكر",
CASE WHEN  Category='ol' THEN sum(Cartonex)END AS "زيت",
CASE WHEN  Category='te' THEN sum(Cartonex)END AS "شاى"
from(
	SELECT 
			Client,   
			Category,
			Cartonex
	FROM 
			ALL_ProductSfO 
	WHERE 
			DATE='2016-03-01'
	) as x
GROUP BY Client
ORDER BY Client ASC;
#5
KARIMSOFT كتب:

جرب هذا

SELECT Client,
CASE WHEN  Category ='sl' THEN   sum(Cartonex)END AS "ملح", 
CASE WHEN  Category='sh' THEN sum(Cartonex)END AS "سكر",
CASE WHEN  Category='ol' THEN sum(Cartonex)END AS "زيت",
CASE WHEN  Category='te' THEN sum(Cartonex)END AS "شاى"
from(
	SELECT 
			Client,   
			Category,
			Cartonex
	FROM 
			ALL_ProductSfO 
	WHERE 
			DATE='2016-03-01'
	) as x
GROUP BY Client
ORDER BY Client ASC;

لم يفلح اخى الكريم

Msg 8120, Level 16, State 1, Line 2
Column 'x.Category' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

نفس المشكلة وعند اضافة GROUP BY Client,Category

يظهر اسم العميل اكثر من مرة مع العلم انى اريد عدم تكرار العميل ووضع مسحوباته امامه.

#6

اسف هذا هو الكود


SELECT Client,
sum(CASE WHEN  Category ='sl' THEN Cartonex else 0 END) AS "ملح",
sum(CASE WHEN  Category='sh' THEN Cartonex else 0 ENd) AS "سكر",
sum(CASE WHEN  Category='ol' THEN Cartonex else 0 END) AS "زيت",
sum(CASE WHEN  Category='te' THEN Cartonex else 0 END) AS "شاى"
from(
    SELECT
            Client,   
            Category,
            Cartonex
    FROM
            ALL_ProductSfO
    WHERE
            DATE='2016-03-01'
    ) as x
GROUP BY Client
ORDER BY Client ASC;

1
#7

بارك الله فيك اخى الكريم ... دائما مبدع 

#8

اكرمك الله

مواضيع مشابهة