I am trying to run my query but return error : Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
x
Select
u.*,
(
Select
COUNT(cDays) as c,
SUM(un) as un,
SUM(vcs) as vcs
From
(
Select
s.DateSales as cDays,
SUM(s.Un) as Un,
SUM(s.VCS) as vcs
From
dbSales.dbo.Sales s
Where
s.IDX = u.IDX And s.DateSales Between DATEADD(dd,-8, u.DateS) And DATEADD(dd,-1, u.DateS)
Group by
s.DateSales
) as sct
)
From
unikat u
)
Advertisement
Answer
Use the APPLY
operator for the subquery:
Select
u.*,
sct.*
From
unikat u
OUTER APPLY
(
Select
COUNT(DISTINCT(s.DateSales)) as cDays,
SUM(s.Un) as Un,
SUM(s.VCS) as vcs
From
dbSales.dbo.Sales s
Where
s.IDX = u.IDX And
s.DateSales Between DATEADD(dd,-8, u.DateS) And DATEADD(dd,-1, u.DateS)
) AS sct
You can incorporate any amount of columns resulting from the APPLY
operator. Use CROSS APPLY
instead of OUTER APPLY
if you want to filter NULL
matching results.