我只需要从SQL Server中的重复行中带回一条记录
我有这样的数据
-------------------------------------------
CustomerID, OrderID, ProductID, Title
-------------------------------------------
1,1001,131,orange
1,1002,131,orange
-------------------------------------------
这些行显示为由同一个人订购的2个项目,实际上它们只是篮子中选择的数量和2个记录。
我的问题是如何只检索其中一行?
由于
答案 0 :(得分:5)
也许是这样的:
首先是一些测试数据:
DECLARE @tbl TABLE(CustomerID INT,OrderID INT,ProductID INT,Title VARCHAR(100))
INSERT INTO @tbl
VALUES
(1,1001,131,'orange'),
(1,1002,131,'orange')
然后查询
;WITH CTE AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY tbl.CustomerID,tbl.ProductID,tbl.Title
ORDER BY tbl.OrderID) AS RowNbr,
tbl.CustomerID,
tbl.OrderID,
tbl.ProductID,
tbl.Title
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1
答案 1 :(得分:4)
通过这种方式,您不仅可以获得两行中的一行,还可以获得订购数量
SELECT
CustomerID, ProductID, Title, max(OrderID) as orderID, COUNT(*) as quantity
FROM
TableName
GROUP BY
CustomerID,
ProductID,
Title
答案 2 :(得分:2)
使用Max可以获得最新的订单
SELECT CustomerID, MAX(OrderId), ProductID, Title
FROM table
GROUP BY CustomerID, ProductID, Title
OR
使用Min将获得第一笔订单
SELECT CustomerID, MIN(OrderId), ProductID, Title
FROM table
GROUP BY CustomerID, ProductID, Title
答案 3 :(得分:1)
如果它真的是您想要的,您可以使用分组和MIN功能(MAX会给您最后一个订单)获得具有相同客户,产品和标题的每个订单的第一个订单:
SELECT CustomerID, MIN(OrderID) AS OrderID, ProductID, Title
FROM MyTable
GROUP BY CustomerID, ProductID, Title
如果您想要重复订单的数量(根据您的问题判断的订购数量),您可以添加一个计数:
SELECT CustomerID, MIN(OrderID) AS OrderID, ProductID, Title,
COUNT(*) AS Quantity
FROM MyTable
GROUP BY CustomerID, ProductID, Title