mssql 如何在已有的表中 添加多个列名?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mssql 如何在已有的表中 添加多个列名?相关的知识,希望对你有一定的参考价值。
举例 已有表《学生》包含姓名,年龄,学分,先需在表中添加加入学日期,毕业日期 备注 等 使用sql语句
alter table 学生 add column 入学日期 date, add column 毕业日期 date, add column 备注 varchar(200);然后你 select * from 学生 limit 1;
你就能看到加过之后的结果了。 参考技术A alter table 《学生》add column 入学日期 date
go
alter table 《学生》add column 毕业日期 date
go
alter table 《学生》add column 备注 varchar(200)
go 参考技术B 语法
ALTER TABLE 表 ADD ADDCOLUMN 字段类型 [ (字长)] [NOT NULL] [CONSTRAINT 索引 ] |
ALTER COLUMN 字段类型 [(字长)] |
CONSTRAINT 多重字段索引 |
DROP DROPCOLUMN 字段 I CONSTRAINT 索引名
ALTER TABLE 语句分为以下几个部分:
部分 说明
table 欲修改的表之名称。
field 欲在表内增加或删除的字段的名称。或表内欲被替换的字段名称。
type 字段的数据类型。
size 字段的字符长度 (文本及二进制字段)。
index 字段索引。欲了解更多有关如何构造本索引的信息,请看 CONSTRAINT子句。
multifieldindex 欲增加至表 中的多重字段索引的定义。欲了解更多有关如何构造本索引的信息,请看 CONSTRAINT子句。
indexname 欲删除的多重字段索引的名称。
如何在已有的SQL查询的语句中,再添加一个查询条件?
两个表,一个表是TBL_TicketBasic,里面存储了票号、票据时间、票据状态等信息;另一个表是TBL_TicketType,里面只有票据类型,票据类型分为客票和货票两种
现在已有一个SQL查询语句实现了查询客票超期6个月,货票超期3个月的所有的票据信息(超期就是从票据时间开始)语句如下:
select * from
(select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo)as c
where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))
我要再添加一个条件,就是在以上的基础上,进一步筛选出票据状态为“未销号”的,请高手帮忙写出语句,谢谢,分数不够可追加
上面没说清楚,票据状态有很多,没有直接的“未销号”,S表示已经销号,排除S的语句怎样写?
(
select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
where
(
(c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate())
)
and c.票据状态 = ‘未销号’
)追问
可能没描述清楚,S表示已经销号。。。排除S的语句怎么写?。。。
追答是不要 已经销号 ,还是要 已经销号 的
下面假设不用 已销号的:
select * from
(
select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
where
(
(c.TicketTypeKind = '2' and c.InDatetime ‘S'
)
可以再嵌套一个
select *from
(
select *
from
(
select a.*, b.TicketTypeKind
from TBL_TicketBasic as a
left join TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))
)d
where d.TicketStatus not like '%S%'
----再或者用inner join 关联下
select *
from
(
select a.*, b.TicketTypeKind
from TBL_TicketBasic as a
left join TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
inner join (select * from TBL_TicketBasic(不确定状态字段在哪个表) where TicketStatus='未销号') e on a.TicketType=e.TicketType
where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))追问
第二个方法查了以后有错误,第一个倒是没错误可是什么也查不到啊。。。我确定我的数据库表里有数据的,奇怪了我也想这样写的,可是就是有问题
追答我不知道你状态的哪个字段是什么 在哪个表的 ?
参考技术C select * from TBL_TicketBasicleft join TBL_TicketType
on TBL_TicketType.id=TBL_TicketBasic.id ---希望表里有对应ID
where 票据时间>6 and id=客票 and 票据状态=未销号
union
select * from TBL_TicketBasic
left join TBL_TicketType
on TBL_TicketType.id=TBL_TicketBasic.id ---希望表里有对应ID
where 票据时间<3 and id=货票and 票据状态=未销号 参考技术D 把前面的两个or条件再用括号括起来,然后后面加and 条件就行了啊 第5个回答 2013-07-24 在你的基础上加上
where 票据状态=‘未销号’
以上是关于mssql 如何在已有的表中 添加多个列名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在火花中连接多个列,同时从另一个表中连接列名(每行不同)