谁能帮我把学生的分数分成五分之一?我认为 SQL Server 2012 中有一个功能,但我们仍然没有t upgraded to it as we are using 2008R2. I tried
Ntile(5)`,但它没有生成所需的结果。我需要低于五分位数列
Student Score Quintile
------------------------
Student1 20 1
Student2 20 1
Student3 30 2
Student4 30 2
Student5 40 2
Student6 40 2
Student7 50 3
Student8 50 3
Student9 60 3
Student10 70 4
Student11 70 4
Student12 80 4
Student13 80 4
Student14 90 5
Run Code Online (Sandbox Code Playgroud) 我编写了以下SQL查询来在SQL Server 2008R2中创建一个序列.我不知道为什么我会遇到这种错误.
SQL代码:
Use CRM
GO
CREATE SEQUENCE User_Detail_Sequence
AS
int START WITH 1
INCREMENT BY 1 NO MAXVALUE
GO
Run Code Online (Sandbox Code Playgroud)
错误:
消息343,级别15,状态1,行1在CREATE,DROP或ALTER语句中使用的未知对象类型"SEQUENCE".
我的表看起来像这样的例子:
Name date result
A 2012-01-01 1
A 2012-02-01 2
B 2013-01-01 1
...
Run Code Online (Sandbox Code Playgroud)
有关完整示例:http://sqlfiddle.com/#!3/00222/1
目前我有一个工作查询,按人和年计算行数:http://sqlfiddle.com/#!3/00225/32
这是完美的,但我想要的是2014年的一些额外信息.我需要计算每个结果我有多少行.这样的事情:
NAME 1 2 3 2014 2013 2012 TOTAL
Person B 4 0 2 6 2 2 10
Person A 2 1 1 4 3 4 11
Person C 1 1 1 3 1 0 4
Run Code Online (Sandbox Code Playgroud)
更好的是我给结果列一个好名字(1 =丢失,2 =抽奖,3 =赢):
NAME lost draw won 2014 2013 2012 TOTAL
Person B 4 0 2 6 2 2 10
Person …
Run Code Online (Sandbox Code Playgroud) 在SQL Server中,如果我有两个表,每个表有(25)列,如何通过SELECT更新表?
查询是:
UPDATE
Table1
SET
Table1.col1 = Table2.col1,
Table1.col2 = Table2.col2,
...
...
...
Table1.col25 = Table2.col25,
FROM
Table1
INNER JOIN
Table2
ON
Table1.id = Table2.id
Run Code Online (Sandbox Code Playgroud)
但有没有办法更新所有列而不写上面的例子所有25列?
我有一个遗留存储过程试图创建一个光标来遍历查询中的每一行.表现非常糟糕.然后我检查查询计划,大部分成本(> 47%)都在一个对象上[tempdb].[CWT_PrimaryKey]
.此对象由存储过程中创建的游标创建.不确定如何提高此案例的性能,因为在tempdb
SQL Server创建的此对象上无法执行任何操作.
存储过程中的伪代码如:
BEGIN TRY
BEGIN TRANSACTION
declare mycusorr local fast_forward
for SELECT * From MyTab Where a=b;
open mycusorr;
fetch next from mycusorr into @v1, @v2, ...;
while @@fetch_status = 0
begin
--some query to check rules from different tables
Update AnotherTab Set column=value where id = @v1;
if (there is error)
insert error to error user log table;
End
close mycusorr;
deallocate mycusorr;
COMMIT;
END TRY
BEGIN CATCH
close mycusorr;
deallocate mycusorr;
SELECT …
Run Code Online (Sandbox Code Playgroud) 我正在使用小型商业软件并导入到SQL Server.但有数字:
75739
76910
73105
75821
75245
75605
77169
73265
75611
74073
77012
Run Code Online (Sandbox Code Playgroud)
这代表我想的日期.
如何将这些数字转换为日期YYYY-MM-DD
和YYYYMMDD
?
我在将值插入表格时遇到问题.
这是脚本:
IF OBJECT_ID ('DEPT', 'table') IS NOT NULL
DROP TABLE DEPT;
GO
CREATE TABLE DEPT (
DEPTNO NUMERIC(2) NOT NULL,
DNAME VARCHAR(14),
LOC VARCHAR(13),
CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO));
GO
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');
GO
IF OBJECT_ID ('EMP', 'table') IS NOT NULL
DROP TABLE EMP;
GO
CREATE TABLE EMP (
EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR NUMERIC(4) CONSTRAINT EMP_SELF_KEY …
Run Code Online (Sandbox Code Playgroud)