ورود

View Full Version : CTE



sasanazizi
چهارشنبه 02 دی 1388, 19:59 عصر
with cte1 as
(
SELECT soh.SalesPersonID, sum(sod.LineTotal) as amount
FROM sales.SalesOrderHeader soh
JOIN sales.SalesOrderDetail sod
ON sod.SalesOrderID = soh.SalesOrderID
WHERE soh.Status = 5 -- complete
and soh.OrderDate >= '20040101'
GROUP by soh.SalesPersonID
)
select cte1.SalesPersonID,cte1.amount,
(select amount from where cte1.SalesPersonID=cte1.SalesPersonID ) / (select sum(amount) from cte1)
from cte1

مشکل این QUERY چیست

AminSobati
چهارشنبه 02 دی 1388, 23:02 عصر
اولین چیزی که به چشم میخوره این هست:

select amount from where

بعد از From نام جدول فراموش شده

محمد سلیم آبادی
پنج شنبه 03 دی 1388, 02:01 صبح
جدا از مشکلی که در پست قبلی اشاره شده،
قبل از کلید واژه ی with از کاراکتر semicolon استفاده کنین.

sasanazizi
پنج شنبه 03 دی 1388, 05:48 صبح
ممنون از توجهتون ولی باز هم مشکل داره من اسم جدول هم گذاشتم


with cte1 as
(
SELECT soh.SalesPersonID, sum(sod.LineTotal) as amount
FROM sales.SalesOrderHeader soh
JOIN sales.SalesOrderDetail sod
ON sod.SalesOrderID = soh.SalesOrderID
WHERE soh.Status = 5 -- complete
and soh.OrderDate >= '20040101'
GROUP by soh.SalesPersonID
)
select cte1.SalesPersonID,cte1.amount,
(select amount from cte1 where cte1.SalesPersonID=cte1.SalesPersonID ) / (select sum(amount) from cte1)
from cte1

محمد سلیم آبادی
پنج شنبه 03 دی 1388, 14:48 عصر
چه پیغام خطایی صادر می شود؟ آن پیغام را ارسال کنین