Reputation: 35
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.
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
)
Upvotes: 0
Views: 213
Reputation: 14199
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.
Upvotes: 1
Reputation: 31
Try this:
Select *
From unikat 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
)
) a
Upvotes: 0
Reputation: 13016
add select top 1
Select
u.*,
(
Select top 1
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
)
Upvotes: 0