אנסה להדגים.
נתונה הטבלא:
Sug | pID | fData 1 | 1 | d11 2 | 1 | d21 3 | 1 | d31 1 | 2 | d12 2 | 2 | d22 3 | 2 | d32 1 | 3 | d13 2 | 3 | d23 3 | 3 | d33
אני מנסה להגדיר שאילתא שתיתן לי את הטבלא הבאה:
pID | Data1 | Data2 | Data 3 1 | d11 | d21 | d31 2 | d12 | d22 | d32 3 | d13 | d23 | d33
כמות הSug וערכיהם ידועים מראש (כ-10, תלוי במערכת המדויקת), כמות השדות המרבית קטנה מ-128 (כמובן ששדות הdata הם בעצם שדות מרובים, אבל לצורך ההסבר פישטתי). כעת אני מבצע שאילתות בסגנון:
select * from (select * from view1 where sug=1) v1 left join (select * from view1 where sug=2) v2 on v1.pID = v2.pID
מקיף הכל בסוגריים, נותן שם ומצרף את השדה הבא (אותו משפט select בסיסי, כאשר sug=3). בחלק מהמקרים אני משתמש בשאילתה עם inner-join (דוגמה מצורפת) כך:
select * from (slect * from view1 where Sug=1) v1, (select * from view1 where Sug=2) v2, (select * from view1 where Sug=3) v3 where v1.pID = v2.pID AND v1.pID = v3.pID
-------------------------------------------------------- אם התכוונת לדוגמה אמיתית ללא ההפשטות, הנה קטע קוד (הקוד הבא עובד מול קובץ mdb, יש לי גרסה שונה - בה נתתי שם שונה לכל שדה כתלות במקורו באשר אני עובד מול ms-sql):
select * from (select CustomerID, Sug, Price, sum(FinalQ3.Consumption) as Consump, sum(FinalQ3.Consumption)*Price as Pay, sum (FinalQ3.NowVal) as NowVal, sum(FinalQ3.YesterdayVal) as YesterdayVal ,sum(FinalQ3.Consumption) as Consumption , fDate from FinalQ3 where Sug=1 group By CustomerID, Sug, Price, fDate) as ePisga, (select CustomerID, Sug, Price, sum(FinalQ3.Consumption) as Consump, sum(FinalQ3.Consumption)*Price as Pay, sum (FinalQ3.NowVal) as NowVal, sum(FinalQ3.YesterdayVal) as YesterdayVal ,sum(FinalQ3.Consumption) as Consumption , fDate from FinalQ3 where Sug=2 group By CustomerID, Sug, Price, fDate) as eGeva, (select CustomerID, Sug, Price, sum(FinalQ3.Consumption) as Consump, sum(FinalQ3.Consumption)*Price as Pay, sum (FinalQ3.NowVal) as NowVal, sum(FinalQ3.YesterdayVal) as YesterdayVal ,sum(FinalQ3.Consumption) as Consumption , fDate from FinalQ3 where Sug=3 group By CustomerID, Sug, Price, fDate) as eShefel, Customer where ePisga.fDate=eGeva.fDate AND ePisga.CustomerID=eGeva.CustomerID AND eShefel.fDate=eGeva.fDate AND eShefel.CustomerID=eGeva.CustomerID AND Customer.ID=eGeva.CustomerID