Flower@12 Ответов: 2

Нельзя использовать агрегат или подзапрос в выражении, используемом для списка group by предложения GROUP by.


Я хочу создать представление, но оно показывает ошибку ниже.

Нельзя использовать агрегат или подзапрос в выражении, используемом для списка group by предложения GROUP BY.

Я думаю, что ошибка в этом месте...
(SELECT tblsuppliercontractdetail.Price AS price FROM tblsuppliercontractdetail WHERE tblsuppliercontractdetail.ProductSID = b.ProductSid
AND (tblsuppliercontractdetail.MasterSID = b.SupplierContractSid)),


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

Создать представление vwrptorderstatusbcscmatching как
Выберите b.BuyerContractSid в качестве BuyerContractSid,
b.BuyerContractSchDetSid как BuyerContractSchDetSid,
c.ContractNo как ContractNo,c.ContractDate как ContractDate,
д. Имя учетной записи-как supplierName,Эл.Имя учетной записи, как имя агента,
Сумма(б.Количество) как количество,сумма(б.SCExcessQty) как SCExcessQty,
Сумма(b.PreInvBalanceQty) как PreInvBalqty,
MAX(b.Sid) AS BSCMatchingMaxSid,
(Выберите tblsuppliercontractdetail.Цена как цена от tblsuppliercontractdetail
Где tblsuppliercontractdetail.ProductSID = b.ProductSid и tblsuppliercontractdetail.MasterSID = b.SupplierContractSid) как ScPrice,
Ф.PrintingDesc как PrintingDesc от tblbscontractmatchingmaster в
Присоединяйтесь к tblbscontractmatchingdetail B на a.Sid = b.MasterSid
Присоединяйтесь к tblsuppliercontractmaster C на c.SID = b.SupplierContractSid
Присоединяйтесь к tblaccountmaster D на d.SID = c.SupplierSID
Левое соединение tblaccountmaster е на эл.Сида = гр.AgentSID
Присоединяйтесь к tblsuppliercontractscheduledetails F на f.SID = b.SuppliercontractSchDetSid
Где (б.Кол-во И gt; 0) Группа Б.BuyerContractSid,б.BuyerContractSchDetSid,д. Имя учетной записи,адрес электронной.Имя учетной записи,
(Выберите tblsuppliercontractdetail.Цена как цена от tblsuppliercontractdetail, где tblsuppliercontractdetail.ProductSID = b.ProductSid
И (tblsuppliercontractdetail.MasterSID = b.SupplierContractSid))
,
f.PrintingDesc,c.ContractNo,c.ContractDate

2 Ответов

Рейтинг:
17

OriginalGriff

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

GROUP BY ..., (SELECT ...)
Вообще.

Видеть здесь: SQL GROUP By и ошибка "имя столбца недопустимо в списке выбора, потому что..." [^] это объясняет, что делает GROUP BY, и может помочь вам понять, что вы пытаетесь сделать - мы понятия не имеем, потому что мы вообще не можем видеть вашу БД, а тем более получить представление о том, что вы пытаетесь получить в качестве вывода!


Рейтинг:
1

Member 13978939

Я думаю, что вы можете попробовать это

Создать представление vwrptorderstatusbcscmatching
АС

Выберите b.BuyerContractSid в качестве BuyerContractSid,
b.BuyerContractSchDetSid как BuyerContractSchDetSid,
c.ContractNo как ContractNo,
c.ContractDate как ContractDate,
d.имя учетной записи в качестве имени поставщика,
e.имя учетной записи как имя агента,
Сумма(б.Количество) как количество,
Сумма(b.SCExcessQty) как SCExcessQty,
Сумма(b.PreInvBalanceQty) как PreInvBalqty,
MAX(b.Sid) AS BSCMatchingMaxSid,

Г. ScPrice,

f.PrintingDesc как PrintingDesc

От tblbscontractmatchingmaster A
Присоединяйтесь к tblbscontractmatchingdetail B на a.Sid = b.MasterSid
Присоединяйтесь к tblsuppliercontractmaster C на c.SID = b.SupplierContractSid
Присоединяйтесь к tblaccountmaster D на d.SID = c.SupplierSID
Левое соединение tblaccountmaster е на эл.Сида = гр.AgentSID
Присоединяйтесь к tblsuppliercontractscheduledetails F на f.SID = b.SuppliercontractSchDetSid
join (SELECT Price AS ScPrice , ProductSID, MasterSID from tblsuppliercontractdetail ) G ON G. ProductSID=b.ProductSid AND G. MasterSID = b.SupplierContractSid

Где isnull(b.Qty,0) > 0

Группа по b.BuyerContractSid ,
b.BuyerContractSchDetSid ,
д. Имя учетной записи ,
e.имя учетной записи ,
Г. ScPrice,
Ф.PrintingDesc,
гр.ContractNo,
гр.ContractDate