SQL Server表变量的使用方法

本文介绍了SQL中表变量的创建与使用方法,并演示了如何通过动态SQL将多列转换为多行显示。此外,还提供了日期格式化的多种示例,并展示了复杂的子查询技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表变量的使用:
DECLARE @T_ChartsIdeaItem1  Table(XData char(20) null,YData char(20) null)
INSERT INTO @T_ChartsIdeaItem1
         (XData,YData)
VALUES   ('BU9876', 'Creating')
select * from @T_ChartsIdeaItem1

查询列转行显示:
begin
declare @sql1 varchar(8000),
    @sql2 varchar(8000),
    @sql3 varchar(8000)
set @sql1='select '
Set @sql2='select '
set @sql3='select '

select @sql1=@sql1+ '''' +convert(varchar(50), 字段1)+ ''' as ['+ convert(varchar(50), 字段1) +'],',
@sql2=@sql2+ '''' +convert(varchar(50),×字段2)+''' as['+ convert(varchar(50), 字段1) +'],',
@sql3=@sql3+ '''' +convert(varchar(50), 字段3)+''' as ['+ convert(varchar(50), 字段1) +'],'
from table
set @sql1=left(@sql1,len(@sql1)-1)
set @sql2=left(@sql2,len(@sql2)-1)
set @sql3=left(@sql3,len(@sql3)-1)
exec(@sql1 + ' union ' + @sql2 + ' union ' + @sql3)
end


日期:

Convert(varchar(10),getdate(),120)
这样的方法来实现,其中varchar(10)定义的是你要的字段的长度,当然长度的不同返回的也会不的,如果我们只要日期部分,设成10正好为日期长度,如果设成19则正好可以读到时间部分。
现在介绍最后面代的参数,分别以代的参数及实例效果说明 

 参数

结果 

 100

 05  8 2006  9:27PM

 101

 05/08/2006

 102

 2006.05.08

 103

 08/05/2006

 104

 08.05.2006

 105

 08-05-2006

 106

 08 05 2006

 107

 05 08, 2006

 108

 21:30:51

 109

 05  8 2006  9:31:11

 110

 05-08-2006

 111

 2006/05/08

 112

 20060508

 113

 08 05 2006 21:31:59

 114

 21:33:06:503

 120

 2006-05-08 21:33:38

另类子查询:

语句:
select *,
(select top 1 grades from T_Assessment where companyid=c.companyid order by AssessmentID desc) as pgrades,
(select (sum(Score) + 60) from T_Honesty where AuditDate>=(select top 1 AssessmentDate from T_Assessment where companyid=c.companyid order by AssessmentID desc) and AuditDate<=getdate() and companyid=c.companyid and Status=2) as Score
from t_company c inner join T_USER u on c.User_ID = u.User_ID where u.UserType=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值