Thursday, August 25, 2011

חיתוך בין רשימות

פוסט של משה טייכר בשם שליפת מילים מתוך טקסט בTSQL שהתפרסם לאחרונה עודד אותי לפרסם תגובה עקיפה בפוסט הסרת תווים מיותרים בו הצעתי דרך טובה יותר (לטעמי) לבצע מטלה מקדימה שלו, ואילו הפוסט הזה הוא בעקבות פטנט יפה שלמדתי ממנו – ביצוע Split בעזרת XML, ואשר סייע לי לפתור באופן אלגנטי בעייה שנתקלתי בה בעבר.

נתחיל מבעייה פשוטה יותר שטיפלתי בה בעקיפין מספר פעמים בעבר (אופציית Multi-Value ב-Reporting Services, יחס של רבים לרבים ללא טבלת עזר) ואציג אותה כאן בצורה מסודרת: נניח שיש לנו טבלת מכירות של מוכרים (מי מכר מה וכמה) וטבלת עמלות שמגדירה לכל מוכר עבור אילו פריטים יקבל עמלה:

If Object_Id('tempdb..#T_Mehirot','U') Is Not Null Drop Table #T_Mehirot;
Go

Create Table #T_Mehirot(ID Int Identity,
                        Moher Varchar(10),
                        Prit Varchar(10),
                        Camut Int);
Go

 
Insert
Into   #T_Mehirot
Select 'Hila','Milk',10 Union All
Select 'Hila','Bread',5 Union All
Select 'Hila','Butter',2 Union All
Select 'Hila','Butter',1 Union All
Select 'Gal','Milk',6 Union All
Select 'Gal','Milk',1 Union All
Select 'Gal','Bread',3 Union All
Select 'Gal','Butter',2;
Go
 

Select  *
From    #T_Mehirot;
Go

If Object_Id('tempdb..#T_Amalot','U') Is Not Null Drop Table #T_Amalot;
Go


Read more: גרי רשף
QR: GR20110824.aspx

Posted via email from Jasper-Net