如何使用2个表和GROUP BY语法从1个表中选择数据?

问题描述

| 我在sql Server中有两个表,它们连接在一起..当我想从一个表中应用
GROUP BY
语法和SELECT时,它影响到第二个表中。 当我使用2个表和
GROUP BY
语法时,如何从1个表中ѭ取1个数据?
SELECT     
    tblProduct.fTechnicalNo,tblProduct.fName,tblProduct.fDesc,tblProduct.fRegisterDate,SUM(tblOrders.fCount) AS Expr1,tblOrders.fSaleDate
FROM tblProduct 
INNER JOIN tblOrders ON tblProduct.fId = tblOrders.fxProductId
WHERE     
    (tblProduct.fRegisterDate >= @Since) 
    AND (tblProduct.fRegisterDate <= @To)
GROUP BY 
    tblProduct.fTechnicalNo,tblOrders.fSaleDate,tblOrders.fCount
我只想将
tblProduct
数据
SELECT
。但是
GROUP BY
语法会更改结果,并在result中显示
tblOrders
数据。我只想要
tblProduct
的结果,而只想要
tblOrders
的1个字段     

解决方法

在内联视图中使用
SELECT tblproduct.ftechnicalno,tblproduct.fname,tblproduct.fdesc,tblproduct.fregisterdate 
FROM   tblproduct 
       INNER JOIN (SELECT SUM(tblorders.fcount) AS sumoffcount,tblorders.fsaledate,tblorders.fxproductid tblorders 
                   GROUP  BY tblorders.fsaledate,tblorders.fxproductid) orderdata 
         ON tblproduct.fid = orderdata.fxproductid 
WHERE  ( tblproduct.fregisterdate >= @Since ) 
       AND ( tblproduct.fregisterdate <= @To ) 
使用通用表表达式
With orderdata  as 
(SELECT SUM(tblorders.fcount) AS sumoffcount,tblorders.fxproductid tblorders 
                       GROUP  BY tblorders.fsaledate,tblorders.fxproductid) 
   SELECT tblproduct.ftechnicalno,tblproduct.fregisterdate 
    FROM   tblproduct 
           INNER JOIN orderdata 
             ON tblproduct.fid = orderdata.fxproductid 
    WHERE  ( tblproduct.fregisterdate >= @Since ) 
           AND ( tblproduct.fregisterdate <= @To ) 
    ,您无法通过汇总进行分组...您的查询还不错。
SELECT     
      tblProduct.fTechnicalNo,tblProduct.fName,tblProduct.fDesc,tblProduct.fRegisterDate,tblOrders.fSaleDate,SUM(tblOrders.fCount) AS Expr1
   FROM
      tblProduct 
         JOIN tblOrders ON tblProduct.fId = tblOrders.fxProductId
   WHERE     
          tblProduct.fRegisterDate >= @Since
      AND tblProduct.fRegisterDate <= @To
   GROUP BY 
      tblProduct.fTechnicalNo,tblOrders.fSaleDate