我有两张表Person和PersonSkill
人
ID | 姓名 |
---|---|
1 | 人 1 |
2 | 人 2 |
3 | 人 3 |
个人技能
PERSON_ID | 技能 | 种类 |
---|---|---|
1 | 唱歌 | 20 |
1 | 俏皮 | 10 |
2 | 唱歌 | 10 |
1 | 碗 | 30 |
1 | SQL | 40 |
我正在尝试编写一个顺序,按字母顺序按技能对人员进行排序,但最后是空值。
寻找这样的东西:
SELECT distinct
p.*,
STUFF(
(SELECT ',' + ps.SKILL
FROM PersonSkill ps
WHERE ps.PERSON_ID = p.ID
ORDER BY ps.SORT
FOR XML PATH('')
), 1, 1, '') sortRule
FROM Person p
ORDER BY IIF(sortRule is null, 1, 0) asc, sortRule asc
但由于某种原因,我不能在 ORDER BY 的一个IIF
或一个case
操作中使用 sortRule,因为它给了我这个错误:Invalid column name 'sortRule'.
如果我STUFF
sortRule
从 select 语句中删除它,它会告诉我在使用时它必须在那里distinct
。我也不能只是将STUFF
down 复制到 order by,因为它会说:ORDER BY items must appear in the select list if SELECT DISTINCT is specified.