我有一个包含客户的表(此表的目标是能够添加没有DB-Update的字段).该表如下所示:
CustId Property PropertyValue
1 Name Smith
1 Email smith@gmail.com
2 Name Donalds
2 Email donalds@gmail.com
3 Name john
Run Code Online (Sandbox Code Playgroud)
(客户3在表格中没有"电子邮件"条目)
预期结果:我希望每个客户端获得一行(Mail),如果客户没有电子邮件,则仍然显示一行为NULL.
CustId Property PropertyValue
1 Email smith@gmail.com
2 Email donalds@gmail.com
3 Email NULL
Run Code Online (Sandbox Code Playgroud)
有人解决方案吗?
查询1
Select t1.CustId
, ISNULL(t2.Property ,'Email') AS Property
, t2.PropertyValue
FROM TableName t1
LEFT JOIN TableName t2 ON t1.CustId = t2.CustId
AND t2.Property = 'Email'
WHERE t1.Property = 'Name'
Run Code Online (Sandbox Code Playgroud)
结果集1
?????????????????????????????????????????
? CustId ? Property ? PropertyValue ?
?????????????????????????????????????????
? 1 ? Email ? smith@gmail.com ?
? 2 ? Email ? donalds@gmail.com ?
? 3 ? Email ? NULL ?
?????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
查询2
对更可读的结果集的另一个查询看起来应该像....
Select t1.CustId
, t1.PropertyValue [CustomerName]
, t2.PropertyValue [CustomerEmail]
FROM TableName t1
LEFT JOIN TableName t2 ON t1.CustId = t2.CustId
AND t2.Property = 'Email'
WHERE t1.Property = 'Name'
Run Code Online (Sandbox Code Playgroud)
结果集2
?????????????????????????????????????????????
? CustId ? CustomerName ? CustomerEmail ?
?????????????????????????????????????????????
? 1 ? Smith ? smith@gmail.com ?
? 2 ? Donalds ? donalds@gmail.com ?
? 3 ? john ? NULL ?
?????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |