Skip to content
Advertisement

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS. SQL

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
)

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.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement