我需要有关如何在SQL代码中计算此计算列的帮助。我之前在论坛上看到过如何基于将列添加到一起来计算,或者只是给出一个标准值。但在我的情况下,我想添加一个列,可以根据另一列的值显示不同的预设值。它就像一个普通的IF-ELIF-ELSE语句。
就我而言,我有一个数据库,一个表,用于记录用户在系统中执行的每个更改。无论何时进行更改,用户员工编号都会记录到表中,而不是员工的姓名。由于我们花了很多时间回到这些日志,我们花了很多时间查找哪个雇主号码属于谁。我希望这可以直接在查询中完成。我有一份所有员工编号及其相应名称的清单。
我的基本SQL技能只告诉我如何导入表/列并创建一个,但是使用IF语句我完全迷失了,下面我已经执行了一些伪代码,所以你可能会理解我在寻找什么。 A.Emp_Num是包含员工编号的列,Emp_Name是创建的列,其中' null'作为内容。
SELECT A.EMP_NUM, A.COLUMN1, A.COLUMN2, 'Null' AS EMP_NAME
FROM LOGGINGTABLE A
IF A.EMP_NUM=='1234' THEN EMP_NAME='MONICA'
ELIF A.EMP_NUM=='5678' THEN EMP_NAME='JOE'
答案 0 :(得分:1)
尝试以下内容
注意:将来维护EMP_NAME与EMP_NUM之间的关系将非常有用。 如果员工数量更多,那么我们就不能像下面那样对这些值进行硬编码,以保持它们之间的关系
SELECT CAST(
CASE
WHEN EMP_NUM =1234
THEN 'MONICA'
WHEN EMP_NUM =5678
then 'JOE'
.
.
.
END AS nvarchar(1000)) as EMPNAME,EMP_NUM, COLUMN1, COLUMN2
FROM LOGGINGTABLE
OR
SELECT
CASE
WHEN EMP_NUM =1234
THEN 'MONICA'
WHEN EMP_NUM =5678
then 'JOE'
.
.
.
END as EMPNAME,EMP_NUM, COLUMN1, COLUMN2
FROM LOGGINGTABL
建议:我建议您在表中添加一个名为EMP_NAME的新列,然后将这些值保存在该列中,将来当您插入EMP_NUM时,插入EMP_NAME也会很容易维护
答案 1 :(得分:0)
SELECT A.EMP_NUM, A.COLUMN1, A.COLUMN2, E.EMP_NAME
FROM LOGGINGTABLE A
INNER JOIN EMPLOYEETABLE E on A.EMP_NUM = E.EMP_NUM
编辑:如果您的条目未映射到用户且您不想错过它们
SELECT A.EMP_NUM, A.COLUMN1, A.COLUMN2, isnull(E.EMP_NAME,'No User Linked') as EMP_NAME
FROM LOGGINGTABLE A
LEFT OUTER JOIN EMPLOYEETABLE E on A.EMP_NUM = E.EMP_NUM
编辑:如果您希望在表格
中获得文本记录的员工BULK INSERT dbo.temp
FROM 'c:\temp\file.txt'
WITH
(
ROWTERMINATOR ='\n'
)
然后
Insert into EMPLOYEETABLE
select LEFT(column1, CHARINDEX(' ', column1+ ' ') - 1),
RIGHT(column1, len(column1)-CHARINDEX(' ', column1+ ' ') - 1)
from dbo.temp
你可能需要修改它,让我知道这样做有什么困难。