Jayanta Modak Ответов: 2

Sql group by error in inner join пожалуйста помогите мне


у меня есть 3 таблицы я внутренне соединяюсь с 3 таблицами и добавляю функцию но теперь получаю ошибку
пожалуйста помогите мне как решить эту проблему пожалуйста помогите мне


ОШИБКА :

Цитата:
Msg 8120, Уровень 16, Состояние 1, Линия 1
Столбец 'TBL_pur_inv.invno' недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.


Таблица 1: TBL_pur_inv как pr
purinvid сльно pdcgst cgstamt pdsgst sgstamt pdigst igstamt TaxableAmt totaltaxamt

Таблица 2: tbl_party_ldg AS p

partyID prtynm prtgst prtpan

Таблица 3: TBL_pur_invdet как prd
пуринвид пуринвдт инвно инвдт партиидпур инвамт

Что я уже пробовал:

select p.prtgst,p.prtynm,pr.invno,pr.invamt,PR.purinvdt,prd.pdcgst,sum(prd.totaltaxamt)As Rate,sum(prd.TaxableAmt)As Taxable_Amount
from TBL_pur_inv as pr
 INNER JOIN tbl_party_ldg  AS p   ON pr.partyIDpur = p.partyID
 INNER JOIN TBL_pur_invdet  AS prd   ON pr.purinvid = prd.purinvid
 
where purinvdt ='2018-01-04' GROUP BY  prd.pdcgst

2 Ответов

Рейтинг:
18

Maciej Los

Сообщение об ошибке совершенно ясно... Вы должны изменить GROUP BY часть к:

GROUP BY p.prtgst,p.prtynm,pr.invno,pr.invamt,PR.purinvdt,prd.pdcgst


Jayanta Modak

спасибо сэр
дело сделано
но (prd.pdcgst) pdgst-это три типа 0.00,2.5,9.00 я хочу показать только 2.5, а 9.00 как скрыть 0.00 pdgst
и показать 5.00 вместо 2.5 и 18.00 вместо 9.00

Jayanta Modak

но (prd.pdcgst) pdgst-это три типа 0.00,2.5,9.00 я хочу показать только 2.5, а 9.00 как скрыть 0.00 pdgst
и показать 5.00 вместо 2.5 и 18.00 вместо 9.00

Maciej Los

Просто умножай prd.pdcgst * 2 и добавьте условие в конце утверждения: WHERE prd.pdcgst>0.00
;)

Jayanta Modak

спасибо сэр
это делается просто я так хочу
Большое спасибо

Maciej Los

Всегда пожалуйста.

Рейтинг:
0

Kornfeld Eliyahu Peter

Агрегатные функции SQL (например, sum) имеют некоторые правила разума...
Вы не можете создать строку (список столбцов), где один и тот же raw содержит как простые, так и агрегированные значения... за исключением случаев, когда ваши простые значения используются для создания групп (разрывов) в запросе...

Причина в двух словах - SQL-запрос возвращает одну строку для каждого элемента, но агрегатная функция возвращает одно значение для всех строк данных...