【问题标题】:Creating variable myhospitalstaff [closed]创建变量 myhospitalstaff [关闭]
【发布时间】:2020-09-09 22:48:32
【问题描述】:
DECLARE @Myhospitalstaff TABLE(EmpID INT  NOT NULL, Name VARCHAR(50)  , Job VARCHAR(50) , HireDate Datetime , City  VARCHAR(50), State VARCHAR(50) )
SET   @Myhospitalstaff = (SELECT 
                        EMPID,
                       SUBSTRING(NameJob,1,CHARINDEX('_',NameJob)-1) AS Name,
                       SUBSTRING(NameJob,CHARINDEX('_',NameJob),LEN(NameJob)) AS Job,
                       HireDate,
                       SUBSTRING(Location,1,CHARINDEX('-',Location)-1) AS City,
                       SUBSTRING(Location, CHARINDEX('-',Location),LEN(Location)) AS State
FROM                   HospitalStaff)

【问题讨论】:

  • 您的问题缺少问题。以及有关您的数据外观和您正在做什么的任何指导。
  • 请勿使用suggested edits 对答案提供反馈。在答案下方的评论框中输入反馈

标签: sql sql-server tsql select sql-insert


【解决方案1】:

如果您希望将查询结果分配给表变量,那么您需要 insert 语法而不是 set - 并且不需要为结果集(表已经有自己的列名):

DECLARE @Myhospitalstaff TABLE(
    EmpID INT  NOT NULL, 
    Name VARCHAR(50), 
    Job VARCHAR(50), 
    HireDate Datetime, 
    City  VARCHAR(50), 
    State VARCHAR(50) 
);

INSERT INTO @Myhospitalstaff
SELECT 
    EMPID,
    SUBSTRING(NameJob,1,CHARINDEX('_',NameJob)-1),
    SUBSTRING(NameJob,CHARINDEX('_',NameJob),LEN(NameJob)),
    HireDate,
    SUBSTRING(Location,1,CHARINDEX('-',Location)-1),
    SUBSTRING(Location, CHARINDEX('-',Location),LEN(Location))
FROM HospitalStaff;

【讨论】:

  • 别名使它更具可读性,因为不需要计算列来查看 SELECT 中的第 6 项应该代表什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
相关资源
最近更新 更多