שאלת t-sql

eyal7773

New member
שאלת t-sql

שלום,
בתור משתמש חדש ב-sql server - שאלה :

כאשר עבדתי עם אקסס - וביצעתי חישוב תוך כדי שאילתא, הייתי קורא לו בשם , נניח AS EXPR1
ואז הייתי יכול להשתמש בשדה החדש שיצרתי - בהמשך השאילתא עבור חישובים אחרים.
ב-SQL SERVER (2012) הוא לא מזהה את השדה החדש - כלומר הוא מבצע את החישוב, ומציג אותו
אבל הוא לא נותן לי להשתמש בשדה החדש בהמשך השאילתא, ולבצע עליו חישובים.

יש פתרון ? אולי איזו מילת ME או משהו בסגנון ?
 

i t a i b

New member
כינויים

היי,

גם ב- Sql server ניתן לתת "כינוי" לאובייקט ולקרוא לו במהלך השאילתא.. לדוגמא:

select t.c1, t.c2, f.c1
from table1 as t inner join table2
on t.id = f.id
 

eyal7773

New member
תודה על המהירות, אבל

המון תודה על המהירות ועל הנכונות.

את מה שאמרת אני מכיר
אני שואל שאלה אחרת
תראה דוגמא:
SELECT

DATEDIFF(n, A.startDateAndTime, A.endDateAndTime) AS Expr1

Expr1*5 As EE2

FROM dbo.tblWorkersPerOrders as A

לגבי השדה השני - שנקרא EE2 , זה לא עובד
הוא לא מזהה את השדה המחושב הראשון Expr1 ( הודעת שגיאה : Invalid column name 'Expr1'. )

מה עושים ?
 

lj101

New member
משהו שלמדתי לאחרונה...זה הכיוון

select Exp1
from (select a.id as Exp1 from a) Tbl1
where exp1=????


מקווה שעזרתי
 

כלליים

New member
אכן

כפי שנאמר לעיל, בsql לא ניתן לחשב עמודה על-סמך עמודה אחרת, ויש צורך להשתמש בשאילתת משנה.
חבל, אבל זה המצב.
 

eyal7773

New member
תודה לכולם, בסוף

באמת את הפתרון האחרון לא הכרתי.

בסופו של דבר, כדי שאוכל בעתיד לתחזק את השאילתא
אז הפכתי את כל החישובים המורכבים ל-UDF שיושבות על השרת.

תודה לכולם.
 
למעלה