0

我有一个名为“学生”的表格,其中包含列名称和技能。名称是 varchar 类型,Skills 包含学生的 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

我该怎么做呢?此外,每个学生都在大学学习。我想显示学院名称来代替名称列。并且技能下的列需要是每个技能的学生人数的计数。

4

1 回答 1

2

我完全同意您确实应该修复表结构的评论。但是,如果你暂时需要一个丑陋的 hack,你可能会得到这样的结果:

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 运算符或产生麻烦的列名。

于 2013-10-17T16:57:24.543 回答