Это примерный вывод таблицы D009022.Группа SQL Server По разделу
LBrCode PrdAcctId
1 20060000000001420000000100000000
1 20060003002891900000000100000000
1 20060004001110490000000100000000
Я использую этот запрос для расчета общего количества продукта.
SELECT
A.LBrCode AS BranchCode,
(SELECT B.Name FROM D001003 B WHERE A.LBrCode = B.PBrCode) AS BranchName,
substring(A.PrdAcctId,1,8) AS ProductCode,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060000'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Miulasi,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060001'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Piripun,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060002'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Prime,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060003'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Sipsaviya,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060004'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Yalu,
(CASE WHEN substring(A.PrdAcctId,1,8)='20060007'
THEN count(substring(A.PrdAcctId,1,8))
END) AS Company,
SUM(substring(A.PrdAcctId,1,8)) AS AccTotal
FROM
D009022 A
WHERE
A.AcctStat<>3 AND
substring(A.PrdAcctId, 1, 8)='20060000'
OR substring(A.PrdAcctId, 1, 8)='20060001'
OR substring(A.PrdAcctId, 1, 8)='20060002'
OR substring(A.PrdAcctId, 1, 8)='20060003'
OR substring(A.PrdAcctId, 1, 8)='20060004'
OR substring(A.PrdAcctId, 1, 8)='20060007'
GROUP BY
A.LBrCode, substring(A.PrdAcctId, 1, 8)
ORDER BY
A.LBrCode, substring(A.PrdAcctId, 1, 8)
Но это так выглядит.
BranchCode BranchName ProductCode Miulasi Piri Prime Sipsaviya Yalu Company Acc
1 City 20060000 5298 5298
1 City 20060001 20 20
1 City 20060002 477 477
Как можно показать результаты за BranchCode
? Как и для каждой ветви только одна строка.
Как насчет использования 'GROUP BY A.LBrCode'? –
Он говорит, что PrdAcctId 'недопустим в списке выбора, потому что он не содержится ни в агрегатной функции –
Это невозможно, если вы также хотите выбрать столбцы без учета. Представьте, что вы получили бы только одну запись за LBrCode, если бы вы сгруппировали именно это. Как получить имя филиала и идентификатор продукта. Существует ли однозначное сопоставление между BrnachCode, BranchName и ProductCode? Если да, то зачем беспокоиться о группировке только LbrCode !? – niksofteng