如何识别新值
How to Identify a new value
我有 3 个 table 相互连接以获取我的客户的信息。我的一些客户是多种族的,这使得 table 有重复的行。
我想知道我是否可以识别一个新值并说如果 ID 重复,在比赛中给我多种族作为值?
我有这个:
ID Name Age Race
4000 Duc 25 Philipino
4000 Duc 25 Chinese
4001 Daniel 36 African American
4002 Nicole 20 White
4002 Nicole 20 Middle East
我想要这个
ID Name Age Race
4000 Duc 25 Multiracial
4001 Daniel 36 African American
4002 Nicole 20 Multiracial
非常感谢任何帮助
;WITH CTE
AS
(SELECT ID,NAME,AGE,RACE,COUNT(*) OVER (PARTITION BY ID,NAME,AGE ORDER BY (SELECT NULL)) AS CNT
FROM
#TEMP
)
SELECT ID,NAME,AGE,CASE WHEN CNT>1 THEN 'MULTIRACILA' ELSE RACE END
FROM CTE
GROUP BY
ID,NAME,AGE,CASE WHEN CNT>1 THEN 'MULTIRACILA' ELSE RACE END
你可以做到(应该适用于 MS SQL 和 MySQL):
SELECT ID,Name,Age, CASE WHEN COUNT(Race)>1 THEN 'Mulitiracial' ELSE MAX(Race) END Race
FROM Src
GROUP BY ID,Name,Age
为了测试您的数据(CTE 仅在 MS SQL)我使用了以下内容:
WITH Src AS
(
SELECT * FROM (VALUES
(4000, 'Duc ', 25, 'Philipino' ),
(4000, 'Duc ', 25, 'Chinese' ),
(4001, 'Daniel', 36, 'African American' ),
(4002, 'Nicole', 20, 'White ' ),
(4002, 'Nicole', 20, 'Middle East ' )
)T (ID,Name,Age,Race)
)
SELECT ID,Name,Age, CASE WHEN COUNT(Race)>1 THEN 'Mulitiracial' ELSE MAX(Race) END Race
FROM Src
GROUP BY ID,Name,Age
我有 3 个 table 相互连接以获取我的客户的信息。我的一些客户是多种族的,这使得 table 有重复的行。
我想知道我是否可以识别一个新值并说如果 ID 重复,在比赛中给我多种族作为值?
我有这个:
ID Name Age Race
4000 Duc 25 Philipino
4000 Duc 25 Chinese
4001 Daniel 36 African American
4002 Nicole 20 White
4002 Nicole 20 Middle East
我想要这个
ID Name Age Race
4000 Duc 25 Multiracial
4001 Daniel 36 African American
4002 Nicole 20 Multiracial
非常感谢任何帮助
;WITH CTE
AS
(SELECT ID,NAME,AGE,RACE,COUNT(*) OVER (PARTITION BY ID,NAME,AGE ORDER BY (SELECT NULL)) AS CNT
FROM
#TEMP
)
SELECT ID,NAME,AGE,CASE WHEN CNT>1 THEN 'MULTIRACILA' ELSE RACE END
FROM CTE
GROUP BY
ID,NAME,AGE,CASE WHEN CNT>1 THEN 'MULTIRACILA' ELSE RACE END
你可以做到(应该适用于 MS SQL 和 MySQL):
SELECT ID,Name,Age, CASE WHEN COUNT(Race)>1 THEN 'Mulitiracial' ELSE MAX(Race) END Race
FROM Src
GROUP BY ID,Name,Age
为了测试您的数据(CTE 仅在 MS SQL)我使用了以下内容:
WITH Src AS
(
SELECT * FROM (VALUES
(4000, 'Duc ', 25, 'Philipino' ),
(4000, 'Duc ', 25, 'Chinese' ),
(4001, 'Daniel', 36, 'African American' ),
(4002, 'Nicole', 20, 'White ' ),
(4002, 'Nicole', 20, 'Middle East ' )
)T (ID,Name,Age,Race)
)
SELECT ID,Name,Age, CASE WHEN COUNT(Race)>1 THEN 'Mulitiracial' ELSE MAX(Race) END Race
FROM Src
GROUP BY ID,Name,Age