-
怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的15
怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的
比如 我取2000-01 到2011-12之间的年月
在 test表里
id name
1 张山
2 张三
3 李四
弄成这样
id name 2000-01 2000-01 2000-01 2000-01 2000-01~~~2011-06
1 张山 NULL NULL NULL NULL NULL NULL
2 张三 NULL NULL NULL NULL NULL NULL
3 李四 NULL NULL NULL NULL NULL NULL
我用这种方法写,不过它报错。
declare @开始日期 nvarchar(50),@结束日期 nvarchar(50)
set @开始日期='2000-01'
set @结束日期='2011-06'
--left(convert(nvarchar,getdate(),120),7) from test
while (@开始日期<@结束日期)
begin
EXEC('ALTER TABLE test ADD
['+@开始日期+'] nvarchar(50) NULL')
EXEC('UPDATE test set test.['+@开始日期+']=''@开始日期'' ')
set @开始日期='@开始日期+1'
end
2011年11月17日 20:31
2个答案 按时间排序 按投票排序
-
采纳的答案
if exists(select 1 from #test)
begin
declare @yuefen nvarchar(50)
declare my_cursor cursor for
select distinct yuefen from #test
open my_cursor
fetch next from my_cursor into @yuefen
while @@fetch_status=0
While @开始日期<=@结束日期
Begin
Set @sql='ALTER TABLE temp_临时表Head'+@StaffID+' Add ['+Left(@开始日期,7)+'] nvarchar(50) NULL '
Exec(@sql)
Print @sql
Set @sql='UPDATE temp_临时表Head'+@StaffID+' set temp_临时表Head'+@StaffID+'.['+Left(@开始日期,7)+']='''+Left(@开始日期,7)+''' where ord=''1'''
-- Set @开始日期=Convert(nvarchar,DATEADD(M,1,@开始日期),23)
Print @sql --输出查看
Exec(@sql)--执行
Set @开始日期=Convert(nvarchar,DATEADD(M,1,@开始日期),23)
fetch next from my_cursor into @yuefen
end
close my_cursor
deallocate my_cursor
end2011年11月22日 20:10
-
drop table test create table test ( id int primary key identity(1,1), name varchar(20) ); alter table test add clm_t1 nvarchar(20) null alter table test drop column ['+@dateStr+'] select * from test; declare @startYear int,@endYear int; declare @startMonth int,@endMonth int declare @dateStr nvarchar(20) declare @yearStr nvarchar(20) declare @monthStr nvarchar(20) set @startYear = 2000 set @endYear=2011 set @startMonth=1 set @endMonth=12 while(@startYear<=@endYear) begin while(@startMonth<=@endMonth) begin set @yearStr = convert(nvarchar,@startYear,4) if(@startMonth<10) begin set @monthStr = '0'+convert(nvarchar,@startMonth,2) end else begin set @monthStr = convert(nvarchar,@startMonth,2) end set @dateStr = @yearStr +'-'+@monthStr print @dateStr exec('alter table test add ['+@dateStr+'] nvarchar(50) null') set @startMonth = @startMonth+1 end set @startYear = @startYear+1 print convert(nvarchar,@startYear,4) end
2011年11月18日 00:02
相关推荐
通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...
本文档介绍了在 SQL Server 中生成日期型自增编码的方法,通过创建两个函数 `GenCustomCode` 和 `GenCustomID`,可以生成按年月日的日期型自增编码。该方法可以应用于各种业务系统中,满足不同业务需求的日期型自增...
例如,在《网络用户管理系统》的开发过程中,开发者可能会构建一个如下的动态SQL语句: ```sql SELECT nid, 姓名, 性别, 出生年月, 职业, 单位全称, 部门, 联系电话 FROM dlyh WHERE 出生日期 BETWEEN :dat1 AND ...
这里,我们使用了BETWEEN运算符,它会选取介于两个值之间的所有记录。这两个值必须是相同数据类型的,因此,日期字符串应当与日期字段匹配。 然而,当日期数据来自用户输入,且以字符串形式存在时,我们需要将这些...
存储过程是在数据库中预编译好的SQL语句集合,可以接受输入参数、返回单个或多个结果集以及返回值。使用存储过程可以提高应用程序性能、增强代码重用性以及加强安全性。在MS SQL Server 2000中创建存储过程的基本...
达梦数据库_SQL语言手册.pdf 数据库快照定义语句 数据库快照删除语句 第章数据查询语句和全文检索语句 单表查询 简单查询 带条件查询 集函数 情况表达式 连接查询 子查询 标量子查询 表子查询 派生表子...
例如,以下SQL语句将分别筛选出生日期为2016年8月23日、2016年8月以及2016年的所有学生: ```sql SELECT * FROM student WHERE DATE_FORMAT(birthday, '%Y-%m-%d')='2016-08-23'; SELECT * FROM student WHERE DATE...
"SQL_SET.rar_SetSQL_sql_sql set _sql set connectattr_sql set rouc"这个标题可能是在暗示一系列关于SQL中的"SET"关键字的教程或者文档集合,包括设置SQL语句、连接属性以及可能涉及到的行计数相关设置。...
- **规则2.11 在EXECSQL语句后加一个TAB键,然后再写SQL语句**:这有助于区分E-SQL和纯SQL语句。 - **规则2.12 SQL语句的关键字SELECT、FROM、WHERE、AND等,必须尾部对齐**:通过对齐这些关键字,可以快速定位和...
在SQL Server中,存储过程是一种预编译的SQL语句集合,它可以接受输入参数并返回输出参数,从而实现更复杂的数据库操作。存储过程不仅可以提高代码的执行效率,还可以增强代码的安全性和可重用性。在本文中,我们将...
* 块结构:PL/SQL的基本结构单位,包含变量、语句和控制结构 * 变量:用于存储数据的容器 * 语句:用于执行操作的语句 * 控制结构:用于控制程序流程的语句 例如,创建一个名为"Hello World"的存储过程: ```sql ...
- 需要编写Transact-SQL语句来获取雇员的姓名、性别、出生年月及雇佣日期,并展示其订单明细、订单数量和订单总金额。 综上所述,实现公司管理数据系统的编程涉及SQL Server的基础知识,包括变量、函数的使用,...
接下来创建一个变量用于记录当前日期,并将其格式化为“年月日”格式(YYYYMMDD),以便在后续操作中作为文件夹名称使用: ```batch set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" ``` 这个命令行中的关键点在于利用`...
- **绑定变量的应用:** 共享SQL语句应使用绑定变量,减少编译开销,提高执行效率。 - **子查询优化:** 减少子查询的使用,优先考虑JOIN操作,以减少数据处理的层级与复杂度。 - **函数与逻辑运算优化:** 使用...
以上示例代码展示了如何在存储过程中使用动态SQL语句来创建两个不同的表:`mtpulseYYYYMM` 和 `pedoYYYYMM`。其中`str_date`变量用于获取当前日期的年月部分,格式为`YYYYMM`,然后使用这个变量来动态地构建表名。 ...
(4)SELECT语句中的WHERE条件可以包含PL/SQL块中定义的变量及表达式,但变量名不要同数据库表列名相同。 (5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] ...
- **外键(FOREIGN KEY)**:用于建立两个表之间的关联。 - **唯一性(UNIQUE)**:确保列中的值是唯一的。 - **非空(NOT NULL)**:确保列中的值不能为空。 - **索引和视图**:了解索引的作用以及如何创建和...
查询主窗体的`Load`事件中,初始化数据库连接,设置SQL语句,执行查询并显示结果。关键代码片段如下: ```vb Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset ' 数据库连接 conn.Open "Provider=...
声明局部变量后,可以在BEGIN和END之间编写执行语句。 ```sql declare i integer; begin -- 测试语句 end; ``` - **命名块**:命名块可以通过PROCEDURE或FUNCTION定义,具有名字并可在数据库中存储。它们...