שאלה ב SQL

שאלה ב SQL

יש לי 2 טבלאות
Daily_Count המכילה את השדות הבאים
TODATE
UNITCODE
CATEGORYֹI אשר לה 2 אופציות S ו U
QUANTITY

UNITS המכילה את השדות הבאים
UNIT_CODE
UNITֹ_NAME

אני רוצה לכתוב שאילתה שתסכם לכל TODATE ולכל UNITֹ_NAME את כמות המכירות והשידרוגים. צריך להציג מכירות גם למכירות שלא ידועה היחידה האירגונית (NULL)

ניסיתי כך:


select D1.[ToDate], D1.[Unit_Code],[dbo].[Units].[Unit_Name], sum(Distinct(D1.[Quantity]))
, sum(Distinct(D2.[Quantity]))

from [dbo].[Units] right JOIN [dbo].[Daily_Counts] as D1 on D1.[Unit_Code]=[dbo].[Units].[Unit_Code]

left JOIN [dbo].[Daily_Counts] as D2 on D2.[Unit_Code]=[dbo].[Units].[Unit_Code]

where
D1.[Category_Id]='S'
and D2.[Category_Id]='U'
and D1.[ToDate] = D2.[ToDate]


Group By D1.[ToDate],D1.[Unit_Code],[dbo].[Units].[Unit_Name],D1.[Category_Id]


אבל לצערי כאשר לא הופעה רשומה ללא יחידה ארגונית. היא לא הופיעה..


מה הפתרון?

תודה
 

גרי רשף

New member
הקוד לא כל כך קריא אך אנסה לעזור..

נראה לי קצת משונה שיש גם Left Join וגם Right Join לאותה טבלה (Daily Counts).

אני מעדיף להשתמש רק ב-Left Join וכך להימנע מלשבור את הראש את מה כן נראה ואת מה לא.

השיטה בדרך כלל היא שעושים Left Join מהטבלה שבצד ה-1 לטבלה שבצד ה-N (רבים).
 

pitoach

New member
אנא צרף DDL+DML

ולפני שאתה שואל מה זה

http://ariely.info/Blog/tabid/83/En...e-DDL-and-Data-Manipulation-Language-DML.aspx
 
למעלה