שאלה בT SQL

נתן.ל

New member
לעזרת המומחים אודה

מדובר באיזו חידה שנתקלתי בה לא מזמן ורציתי לשתף ולשאול את המומחים להצעתם ולאפשרות פתרון יותר חכם ממה שאני הגעתי אליו.
בתודה מראש


יש לנו טבלה:

create table #TempTable (
tID int PRIMARY KEY IDENTITY,
userName varchar(10),
userType int,
TypeValue decimal(4,2)
)

ויש בה נתונים כאלה:

insert into #TempTable Values
('one', 1, 12),
('one', 1, 20),
('one', 2, 10),
('one', 2, 10),
('two', 1, 10),
('two', 1, 20),
('two', 1, 30),
('two', 2, 10)

עכשיו נציג את הנתונים בצורה מסכמת עבור כל TYPE:

userName userType typeValue
one 1 32
two 1 60
one 2 20
two 2 10


ונגיד שבא לנו להציג נתונים מסוכמים עבור כל USER עם סיכום של כל הTYPES שלו:

userName Type1 Type2
one 32 20
two 60 10

הפתרון הסביר, שאני הגעתי אליו הוא כזה:

SELECT userName,
Type1 = (select SUM(typeValue) from #TempTable where T.userName = userName and userType = 1),
Type2 = (select SUM(typeValue) from #TempTable where T.userName = userName and userType = 2)
FROM #TempTable T
GROUP by userName


נורא מעניין אותי האם לדעתכם יש דרך יותר פשוטה, נכונה, טובה להגיע לאותה התצוגה(של סיכום פר יוזר)
מי יכול לעזור?

נ.ב: סתם חשבתי על זה, מה אם נגיד יש לנו מספר TYPES בלתי ידוע מראש?
 
למעלה