2014-03-14 59 views
1

我从数据库SQL Server 2000的这个查询:总和在SQL查询

SELECT D.KODDESIGNASI AS KJB_KODKAT, 
(SELECT ISNULL((SELECT SUM(AJW_HAK) FROM AGIHANJPAT WHERE AJW_KODALAT=K.KODALAT),0))  
AS PERJAWATAN 
FROM KAT_PERALATAN AS K, KOD_PERALATAN AS A, DESIGNASI AS D 
WHERE K.KODKATEGORI=A.KODKATEGORI AND A.KODDESIGNASI=D.KODDESIGNASI AND 
D.KODDESIGNASI='BST' 
ORDER BY D.PERIHAL 

从这个查询,我得到这个结果

KJB_KODKAT PERJAWATAN 
------------------------ 
BST   2 
BST   6 
BST   1265 
BST   54 
...   ... 
...   ... 
...   ... 

现在,我想要得到的PERJAWATAN WHERE D.KODDESIGNASI='BST'总价值。 我尝试修改我的查询是这样的:

SELECT D.KODDESIGNASI AS KJB_KODKAT, 
SUM(SELECT ISNULL((SELECT SUM(AJW_HAK) FROM AGIHANJPAT WHERE 
     AJW_KODALAT=K.KODALAT),0)))  
AS PERJAWATAN 
FROM KAT_PERALATAN AS K, KOD_PERALATAN AS A, DESIGNASI AS D 
WHERE K.KODKATEGORI=A.KODKATEGORI AND A.KODDESIGNASI=D.KODDESIGNASI AND 
D.KODDESIGNASI='BST' 
ORDER BY D.PERIHAL 

但是,我得到了错误。任何人都可以帮助我解决我的错误?我很新SQL SERVER 2000。它与MYSQL不同吗?

+0

你会得到什么错误信息? –

+0

我得到这个错误:'不能对包含聚合或子查询的表达式执行聚合函数.' – crystal

回答

0
select KJB_KODKAT, SUM(PERJAWATAN)  
    from (
    SELECT D.KODDESIGNASI AS KJB_KODKAT, 
    (SELECT ISNULL((SELECT SUM(AJW_HAK) FROM AGIHANJPAT WHERE AJW_KODALAT=K.KODALAT),0))  
    AS PERJAWATAN 
    FROM KAT_PERALATAN AS K, KOD_PERALATAN AS A, DESIGNASI AS D 
    WHERE K.KODKATEGORI=A.KODKATEGORI AND A.KODDESIGNASI=D.KODDESIGNASI AND 
    D.KODDESIGNASI='BST' 
    ORDER BY D.PERIHAL) Z 
group by KJB_KODKAT 

试试这个

0

试试这个。

SELECT KJB_KODKAT, SUM(PERJAWATAN) 
FROM 
(
SELECT D.KODDESIGNASI AS KJB_KODKAT, 
     (SELECT ISNULL((SELECT SUM(AJW_HAK) FROM AGIHANJPAT WHERE AJW_KODALAT=K.KODALAT),0))AS PERJAWATAN 
FROM KAT_PERALATAN AS K, KOD_PERALATAN AS A, DESIGNASI AS D 
WHERE K.KODKATEGORI=A.KODKATEGORI 
     AND A.KODDESIGNASI=D.KODDESIGNASI 
     AND D.KODDESIGNASI='BST' 
)SourceQuery 

这应该工作,但是,您应该使用连接,而不是您的原始代码。