我有一个名为Student with Columns Name and Skills的表。 名称是varchar类型,技能包含CSV格式的学生技能。 例如:
Name Skills
ABC C,Python,JAVA
XYZ C,Python,C#
UT C,SQL,JS,CSS
我想显示一个像这样的表
Name C C++ C# Python JAVA SQL JS CSS
ABC 1 0 0 1 0 0 0 0
XYZ 1 0 1 1 0 0 0 0
我该怎么做? 此外,每个学生都在大学学习。 我想显示学院名称来代替名称列。 并且技能下的专栏需要是每个技能的学生数量的COUNT。
答案 0 :(得分:2)
我完全同意您 应该 修复您的表格结构的评论。但是,如果你暂时需要一个丑陋的黑客,你可能逃避这样的事情:
SELECT
[Name],
IIf(Skillz LIKE "*,C,*",1,0) AS C,
IIf(Skillz LIKE "*,Python,*",1,0) AS Python,
IIf(Skillz LIKE "*,CSS,*",1,0) AS CSS
FROM
(
SELECT
[Name],
"," & Skills & "," AS Skillz
FROM tblSkills
)
诀窍是将逗号粘贴到“技能”列的开头和结尾,因此在每种情况下,您只搜索"*,C,*"
而不是"C,*" Or "*,C,*" Or "*,C"
之类的内容。
另外,请注意“有趣的字符”,以防它们混淆LIKE运算符或产生麻烦的列名。