当我在2个整数之间进行除法时,我想指定小数位数,如:
select 1/3
Run Code Online (Sandbox Code Playgroud)
目前返回0.我希望它能回来0,33.
就像是:
select round(1/3, -2)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我怎样才能达到预期的效果?
UPDATE dbo.TestStudents
SET LASTNAME =
( CASE
WHEN (LASTNAME = 'AAA') THEN 'BBB'
WHEN (LASTNAME = 'CCC') THEN 'DDD'
WHEN (LASTNAME = 'EEE') THEN 'FFF'
ELSE (LASTNAME)
END )
Run Code Online (Sandbox Code Playgroud)
该语句适用于此目的,但else条件扫描表中的每条记录.有什么方法可以保留未受影响的行吗?
我有一个包含用户及其成绩的SQL Server表.为简单起见,我们只想说有2列 - name&grade.所以一个典型的行是Name:"John Doe",等级:"A".
我正在寻找一个SQL语句,它将找到所有可能答案的百分比.(A,B,C等......)另外,有没有办法在没有定义所有可能的答案的情况下这样做(开放文本字段 - 用户可以输入'通过/失败','无'等...)
我要找的最终输出是A:5%,B:15%,C:40%等等......
想象一下下表(称为TestTable):
id somedate somevalue
-- -------- ---------
45 01/Jan/09 3
23 08/Jan/09 5
12 02/Feb/09 0
77 14/Feb/09 7
39 20/Feb/09 34
33 02/Mar/09 6
Run Code Online (Sandbox Code Playgroud)
我想要一个以日期顺序返回运行总计的查询,例如:
id somedate somevalue runningtotal
-- -------- --------- ------------
45 01/Jan/09 3 3
23 08/Jan/09 5 8
12 02/Feb/09 0 8
77 14/Feb/09 7 15
39 20/Feb/09 34 49
33 02/Mar/09 6 55
Run Code Online (Sandbox Code Playgroud)
我知道在SQL Server 2000/2005/2008中有各种方法可以做到这一点.
我对使用aggregate-set-statement技巧的这种方法特别感兴趣:
INSERT INTO @AnotherTbl(id, somedate, somevalue, runningtotal)
SELECT id, somedate, somevalue, null
FROM TestTable
ORDER …Run Code Online (Sandbox Code Playgroud) 我正在尝试做类似的事情:
SELECT * FROM table LIMIT 10,20
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * FROM table LIMIT 10 OFFSET 10
Run Code Online (Sandbox Code Playgroud)
但是使用SQL Server
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Run Code Online (Sandbox Code Playgroud)
我还发现:
SELECT TOP 10 * FROM stuff;
Run Code Online (Sandbox Code Playgroud)
...但这不是我想要做的,因为我无法指定起始限制.
我还有另一种方法吗?
另外,只是好奇,有没有一个理由为什么SQL Server不支持该LIMIT功能或类似的东西?我不想吝啬,但这听起来像DBMS需要的东西......如果确实如此,那么我很抱歉这么无知!我在过去的5年里一直在使用MySQL和SQL +所以......
我有两个变量,一个是调用PaidThisMonth,另一个是调用OwedPast.它们都是SQL中某些子查询的结果.如何选择两者中较小的一个并将其作为标题值返回PaidForPast?
该MIN函数适用于列,而不是变量.
我已经开发了一个查询,并在前三列的结果中得到了NULL.我该如何更换0?
Select c.rundate,
sum(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,
sum(case when c.runstatus = 'Failed' then 1 end) as Failed,
sum(case when c.runstatus = 'Cancelled' then 1 end) as Cancelled,
count(*) as Totalrun from
( Select a.name,case when b.run_status=0 Then 'Failed' when b.run_status=1 Then 'Succeeded'
when b.run_status=2 Then 'Retry' Else 'Cancelled' End as Runstatus,
---cast(run_date as datetime)
cast(substring(convert(varchar(8),run_date),1,4)+'/'+substring(convert(varchar(8),run_date),5,2)+'/' +substring(convert(varchar(8),run_date),7,2) as Datetime) as RunDate
from msdb.dbo.sysjobs as a(nolock) inner join msdb.dbo.sysjobhistory as b(nolock)
on …Run Code Online (Sandbox Code Playgroud) 我有一张桌子列出了人们的出生日期(目前是nvarchar(25))
如何将其转换为日期,然后计算年龄?
我的数据如下
ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00
Run Code Online (Sandbox Code Playgroud)
我想看看:
ID Name AGE DOB
1 John 17 1992-01-09 00:00:00
2 Sally 50 1959-05-20 00:00:00
Run Code Online (Sandbox Code Playgroud) 我想Employees在数据库中更改表的模式名称.在当前表Employees数据库模式名称是dbo我想要更改为exe.我该怎么做 ?
例:
从
dbo.Employees
Run Code Online (Sandbox Code Playgroud)
至
exe.Employees
Run Code Online (Sandbox Code Playgroud)
我试过这个查询:
ALTER SCHEMA exe TRANSFER dbo.Employees
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
无法更改架构'exe',因为它不存在或您没有权限.
我错过了什么?
我有一个包含许多行的Tablix,这些行跨越多个页面.我已经在每个页面上设置了Tablix属性重复标题行,但这不起作用.我在某处读到这是Report Builder 3.0中的已知错误.这是真的?如果没有,还有什么需要做的吗?
sql-server ×10
sql ×6
t-sql ×5
date ×1
division ×1
limit ×1
pagination ×1
rounding ×1
schema ×1
select ×1
sql-update ×1
ssrs-tablix ×1