1
我有Animal
表下面提到的表结构:更新只有当所有列都存在 - SQL Server 2008中
AnimalId | AnimalName | SelectAnimal
1 | Cat | NULL
2 | Dog | NULL
3 | Sheep | NULL
4 | Cow | NULL
AnimalFeature
表:
Animal Id | Feature | Present
1 | Teeth | Y
1 | Milk | Y
1 | Tail | Y
2 | Teeth | Y
3 | MILK | Y
4 | Teeth | Y
4 | MILK | N
4 | Tail | Y
,我产生一个逗号使用以下查询的本列分隔列表
SELECT DISTINCT
A1.AnimalId,
STUFF((SELECT ', ' + ltrim(rtrim(A2.Present))
FROM Animal AS A2
WHERE A1.AnimalId = A2.AnimalId
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') As ConcatValue
FROM
Animal as A1
GROUP BY
AnimalId;
该req只有当所有功能都存在时才需要更新动物主表。
如果前两个特征是肯定的,那么selectanimal
列将会有其他的没有 如果不是所有的特征都存在,那些记录需要被忽略。
最终的输出应该像
1 CAT Y
2 DOG NULL
3 SHEEP NULL
4 COW N
您能给任何指针或上如何做到这一点帮助?
不需要做'选择DISTINCT'因为你'集团BY'返回无重复! (有些类似的功能,聚合函数是主要区别。) – jarlh