问题描述
|
我在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