Только одно выражение может быть указано в списке выбора, если подзапрос не введен с EXISTS.SQL - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь выполнить свой запрос, но возвращаю ошибку: только одно выражение может быть указано в списке выбора, когда подзапрос не введен с 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
)

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Используйте оператор APPLY для подзапроса:

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

Вы можете включить любое количество столбцов, полученных с помощью оператора APPLY.Используйте CROSS APPLY вместо OUTER APPLY, если вы хотите отфильтровать NULL результаты поиска.

0 голосов
/ 24 сентября 2019

добавить 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
)
0 голосов
/ 24 сентября 2019

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...