Добавление вычисляемого столбца в запрос SQL Server - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь добавить столбец в свой запрос (см. Внизу), умножая два столбца вместе и группируя по номеру элемента, но я получаю следующую ошибку:

Столбец 'IV00102.LOCNCODE 'недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Я уверен, что это простое решение, которое было рассмотрено здесь, ноЯ не смог найти то, что искал.Любая помощь будет высоко ценится

 SELECT        
     IV00101.ITEMNMBR, IV00102.LOCNCODE, IV00102.BINNMBR, IV00101.STNDCOST,
     IV00101.CURRCOST, IV00101.USCATVLS_3, IV00101.USCATVLS_4, 
     IV00101.USCATVLS_2, IV00102.QTYONHND, 
     SUM(IV00101.CURRCOST * IV00102.QTYONHND) AS 'CxQ'
 FROM            
     IV00101 
 INNER JOIN
     IV00102 ON IV00101.ITEMNMBR = IV00102.ITEMNMBR
 WHERE
     IV00102.LOCNCODE <> ''
 GROUP BY
     IV00101.ITEMNMBR; 

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Это может оказаться проще с apply:

SELECT i1.*, i2.CxQ
FROM IV00101 i1 CROSS APPLY
     (SELECT i2.ITEMNMBR, SUM(i1.CURRCOST * i2.QTYONHND) as CxQ
      FROM IV00102 i2
      WHERE i2.ITEMNMBR = i1.ITEMNMBR AND
            i2.LOCNCODE <> ''
    ) i2;

Также обратите внимание, что псевдонимы таблиц облегчают написание и чтение запроса.

0 голосов
/ 07 марта 2019

Столбцы выбора необходимо добавить в GROUP BY, за исключением столбца агрегирования

  SELECT        IV00101.ITEMNMBR, IV00102.LOCNCODE, IV00102.BINNMBR, IV00101.STNDCOST, IV00101.CURRCOST, IV00101.USCATVLS_3, IV00101.USCATVLS_4, IV00101.USCATVLS_2, 
                                 IV00102.QTYONHND,
     SUM(IV00101.CURRCOST*IV00102.QTYONHND) AS 'CxQ'
        FROM            IV00101 INNER JOIN
                                 IV00102 ON IV00101.ITEMNMBR = IV00102.ITEMNMBR
        WHERE               IV00102.LOCNCODE <> ''

        GROUP BY        IV00101.ITEMNMBR,IV00102.LOCNCODE, IV00102.BINNMBR, IV00101.STNDCOST, IV00101.CURRCOST, IV00101.USCATVLS_3, IV00101.USCATVLS_4, IV00101.USCATVLS_2, 
                                 IV00102.QTYONHND
...