如何使用唯一值创建新列

时间:2018-03-22 02:51:22

标签: sql sql-server

我的表TB_PRUEBAS有一个名为“CltsVcdos”的列,其中有几个重复的客户ID。现在,我想添加一个新列,当Id是唯一时显示1,当重复Id时显示0。

查询的一部分 enter image description here

这就是我想要的东西

enter image description here

谢谢!

2 个答案:

答案 0 :(得分:2)

Case When ((ROW_NUMBER() OVER(  PARTITION BY CltsVcdos ORDER BY CltsVcdos ASC) ) =1)  then 1 else 0 end 

您可以使用以上条件获得UNIQUEVALUES 以下示例进一步解释

CREATE TABLE [dbo].[TB_PRUEBAS](
    [CltsVcdos] [int] NULL
) ON [PRIMARY]

INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (101)
INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (101)
INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (101)
INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (102)
INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (102)
INSERT [dbo].[TB_PRUEBAS] ([CltsVcdos]) VALUES (104)


SELECT  
 ROW_NUMBER() OVER(ORDER BY CltsVcdos ASC) AS Row#,
[CltsVcdos],
(ROW_NUMBER() OVER(  PARTITION BY CltsVcdos ORDER BY CltsVcdos ASC) ) As RepeatedRowNumber ,
Case When ((ROW_NUMBER() OVER(  PARTITION BY CltsVcdos ORDER BY CltsVcdos ASC) ) =1)  then 1 else 0 end As UNIQUEVALUES
FROM [dbo].[TB_PRUEBAS] P 

答案 1 :(得分:0)

这假设您有某种identity ,它指定了排序

select CltsVcdos,
        (case when count(CltsVcdos) over (partition by CltsVcdos by <identity_col>) > 1 
              then 0 else 1 end) as UniquValues
from TB_PRUEBAS