在新列中标记重复的值

所以我需要帮助一个查询,将标记重复在一个特定的列。

基本上我有2列这样的:

cust_id Order_id 001 001 001 002 001 003 002 001 003 001 003 002 

我想在我的Q中创build一个新列,其中唯一的标记为'1',只有cust_id列的重复标记为'0'。 我的想法是在order_id列上使用min或<函数来确定哪个cust_id首先被input以标记为“1”

到目前为止,这是我提出的,显然是不正确的:

 SELECT A.cust_id, B.order_id, CASE WHEN COUNT(A.cust_id) > 1 THEN 0 WHEN COUNT(A.cust_id) = 1 THEN 1 END AS 'TESTING' FROM CUST A INNER JOIN ORDER B ON B.cust_id = A.cust_id GROUP BY B.order_id, A.cust_id 

这运行,但只标记一个'1'的一切。 我知道这是因为它正在按照我要求的方式进行,而且它实际上是在查看cust_id的值,以及为什么ALL> 1并返回所有的'1'。

如何重写这个标记cust_id的第一个实例用'1'和其余(或重复的cust_id为'0'

目的是让我可以总结出'1'的优秀,并从那里做一个数据透视图的计算。

先谢谢您的帮助!!!!! 这个网站不止一次地拯救了我的生命!

编辑:

使用MS SQL 2008 R2

 cust_id Order_id Unique 001 001 1 001 002 0 001 003 0 002 001 1 003 001 1 003 002 0 

上述结果是你正在寻找什么? 以下是基于AdventureWorks数据库的示例。 你得到全部1的原因是由于对客户和订单的分组。 你想分组刚刚Cust。

 use AdventureWorks2008R2 ;with CustSales as ( select C.CustomerID, H.SalesOrderID, ROW_NUMBER() over (partition by C.CustomerID order by SalesOrderID) as s from Sales.Customer C join Sales.SalesOrderheader H on C.CustomerID = H.CustomerID ) select CustomerID, SalesOrderID, case when s = 1 then 1 else 0 end as [Unique] from CustSales 
 SELECT t1.*, CASE s.num WHEN 1 THEN 1 ELSE 0 END uniq FROM Table1 t1 JOIN (SELECT cust_id, COUNT(*) num FROM Table1 GROUP BY cust_id) s ON s.cust_id = t1.cust_id 

SQLFiddle