【发布时间】:2020-09-19 12:14:57
【问题描述】:
以下是我正在处理的数据集。
我正在尝试根据特定条件创建新列。下面是代码:-
SELECT
*
,
CASE
WHEN [Partner Number] Like ('SAL%') THEN [Partner Name]
ELSE ''
END AS [SAL Name],
CASE
WHEN [Partner Number] Like ('SAL%') THEN [Partner Email Address]
ELSE ''
END AS [SAL Email],
CASE
WHEN [Partner Number] Like ('CEO%') THEN [Partner Name]
ELSE ''
END AS [CEO Name],
CASE
WHEN [Partner Number] Like ('CEO%') THEN [Partner Email Address]
ELSE ''
END AS [CEO Email],
CASE
WHEN [Partner Number] Like ('VPS%') THEN [Partner Name]
ELSE ''
END AS [VPS Name],
CASE
WHEN [Partner Number] Like ('VPS%') THEN [Partner Email Address]
ELSE ''
END AS [VPS Email]
Into #Partner
from (
Select distinct [Vendor Number],
[Purchasing Org],
[Partner Number],
[Partner Name]
,
[Partner Email Address] from #Temp)k
但如果集合同时具有 SAL 和 CAL,它会生成两个不同的行。
可以在同一行生成它们,因为当我进行连接时,数据会爆炸。
理想情况下,Sal Name 和 cal Name 在同一行中。
结果
【问题讨论】:
-
您的查询设置方式无法添加重复值。因此,重复值必须已经在您的数据集中。此外,看不到您所指的“CAL”值。
-
关注底部的 SELECT DISTINCT 语句 - 它似乎会根据您的选择列表中的两列生成多行,这些列出乎意料地不同
-
要么对同一个表使用多个连接,要么使用数据透视表。而且 - 如果您在查询中需要
distinct关键字,那么您的逻辑通常有问题:)
标签: sql-server tsql case