通过分析第1列中的数据来查询以创建新列

时间:2018-04-27 05:38:06

标签: sql sql-server

我在一个项目的SQL Server上工作。我有这个数据

列1

B.Ed

B.Ed

B.Ed

PTC

PTC

现在我想要的数据是,在SQL Server中它应该创建两个名为B.Ed和PTC的新列,并插入" 1"在Column1中出现的字段中。这就是输出应该如何 Output

我猜测它将用子查询完成,我试图理解它们但却无法理解这个概念。因此,如果您可以帮助我们使用SQL查询,可以实现我在这里尝试实现的目标。抱歉格式化,但我希望你们都明白我的观点。

2 个答案:

答案 0 :(得分:0)

您可以在此处使用案例expression

select *, (case when ProfQual_16 = 'B.Ed' then 1 end) as BED,
          (case when ProfQual_16 = 'PTC' then 1 end) as PTC 
from table t;

答案 1 :(得分:0)

您可以使用case表达式

更新现有表格

如果现有表中已有新列,则可以直接使用更新语句,如果需要,可以根据需要添加新列。

ALTER TABLE EducationQualification
ADD BTech VARCHAR(127),MTech VARCHAR(127),

SQL查询: 因为我在创建表时创建了新列:

CREATE TABLE EducationQualification
(
Qualification VARCHAR(100),
BTech   VARCHAR(100) NULL,
MTech   VARCHAR(100) NULL
)

INSERT INTO EducationQualification
(Qualification,BTech,MTech)
VALUES
('B.Tech',NULL,NULL),('B.Tech',NULL,NULL),('B.Tech',NULL,NULL),('M.Tech',NULL,NULL)

SELECT * FROM EducationQualification

<强>输出:

enter image description here

UPDATE EducationQualification
SET BTech = CASE
                WHEN Qualification = 'B.Tech' THEN 1
                ELSE NULL
            END,
    MTech = CASE
                WHEN Qualification = 'M.Tech' THEN 1
                ELSE NULL
            END

更新查询后的结果:

enter image description here