从两个不同的表中获取SUM到一个结果中

时间:2012-01-19 18:06:33

标签: sql sql-server-2008 asp-classic

我一直试图让这个工作12小时现在我不能:-(有人可以告诉我如何让ssnumber分组并获得每个ssnumber的总数

这是我现在拥有的。在表1中,我有这个代码

SELECT 
    UNIT_NO, SUM(RATEB) AS TOTALRTE 
FROM TABLE1 
WHERE 
    TRUCK_PAID = 1 
    AND PICK_UP_DATE >= '(fromdate)' 
    AND PICK_UP_DATE <= '(todate)'
GROUP BY 
     UNIT_NO
ORDER BY  
     UNIT_NO

但是表号2是ssnumber列的位置,所以我要做的是来自每个unit_no的所有负载的rateB总和然后将它们分组然后进入表号2和将ssnumber与表编号1中的单元编号分组,并将表编号1中的rateB汇总。

像这样的东西(见下文)但它不起作用:-(

SELECT 
    UNIT_NO, SUM(RATEB) 
FROM 
    TABLE1 
WHERE 
    TRUCK_PAID = 1 
    AND PICK_UP_DATE >= '(fromdate)' 
    AND PICK_UP_DATE <= '(todate)' 
GROUP BY 
    UNIT_NO 
JOIN 
    TABLE TABLE1.UNIT_NO = TABLE2.UNIT_NO GROUP BY TABLE2.SS_NUM

SELECT 
    UNIT_NO, SUM(RATEB) AS TOTALRATE 
FROM 
    TABLE1 
GROUP BY 
    UNIT_NO 
JOIN 
    TRUCKS ON (TABLE1.UNIT_NO = TABLE2.UNIT_NO) 
GROUP BY 
    TABLE2.SSNUMBER

非常感谢你们帮助......

2 个答案:

答案 0 :(得分:2)

根据要求,如果没有关于table2的更多信息并且可能是您期望的一个示例,很难真正理解您要完成的任务。但是,我从你的描述中得到的是你正试图完成这样的事情?

SELECT UNIT_NO, TOTALRTE, TOTALLDSRTE
FROM
(
    SELECT UNIT_NO,SUM(RATEB) AS TOTALRTE 
    FROM LOADS 
    GROUP BY UNIT_NO
) AS tbl1
JOIN
(
    SELECT SS_NUM, SUM(RATEB) AS TOTALLDSRTE
    FROM LOADS
    GROUP BY SS_NUM
) AS tbl2
    ON tbl1.UNIT_NO = tbl2.SS_NUM

答案 1 :(得分:0)

我建议不要在一个选择查询中从两个选择查询中获取数据,而是尝试将它们作为单独的查询获取。这节省了大量时间。那,或者你可以为结果创建一个表,并将每个查询的结果更新到表中。