Как написать этот запрос? - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу получить всю информацию, а также сумму суммы по имени, поэтому я использую этот запрос для этой цели.

select SUM(Amount)as total,RecieptNo,Name,UniqueId,Date,Amount,LateFee,Other from Amount where Name='Shaikh'

но эта ошибка произошла. Столбец Amount.RecieptNo недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY. поэтому, пожалуйста, помогите мне.

Ответы [ 4 ]

4 голосов
/ 27 апреля 2011
Select RecieptNo, Name
    , UniqueId, Date
    , Amount
    , LateFee, Other 
    , ( Select Sum( A1.Amount )
        From Amount As A1
        Where A1.Name = A.Name ) As Total
From Amount As A
Where Name='Shaikh'

Другой вариант, доступный в SQL Server 2005 +:

Select RecieptNo, Name
    , UniqueId, Date
    , Amount
    , LateFee, Other 
    , Sum( Amount ) Over( Partition By Name ) As Total
From Amount As A
Where Name='Shaikh'
1 голос
/ 27 апреля 2011
select SUM(Amount)as total,RecieptNo,Name,UniqueId,Date,Amount,LateFee,Other from Amount
group by RecieptNo,Name,UniqueId,Date,Amount,LateFee,Other having Name='Shaikh'
1 голос
/ 27 апреля 2011

При использовании агрегатных функций SQL, таких как SUM (), необходимо использовать предложение GROUP BY.Пример ниже демонстрирует это.Однако это может быть не самый идеальный подход к решению вашего запроса.Что я сделал, так это добавил предложение group by, которое включает все выбранные вами столбцы, кроме SUM.Например:

    select RecieptNo, Total, UniqueId, Date, Amount, LateFee, Other SUM(Amount)as total  from 
Amount where Name='Shaikh' group by RecieptNo, Total, UniqueId, Date, Amount, LateFee, Other
0 голосов
/ 27 апреля 2011

Вам нужно сгруппировать по

select SUM(Amount)as total,Name from Amount where Name='Shaikh' group by Name

Если вы хотите добавить другую вещь в список выбора, вам нужно добавить это поле в вашу группу по выражению, также в противном случае она выдаст ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...