标签: t-sql

@@ IDENTITY,SCOPE_IDENTITY(),OUTPUT和其他检索最后一个身份的方法

我已经看到在插入后检索主键标识字段的值时使用的各种方法.

declare @t table (
    id int identity primary key,
    somecol datetime default getdate()
)
insert into @t
default values

select SCOPE_IDENTITY() --returns 1
select @@IDENTITY --returns 1
Run Code Online (Sandbox Code Playgroud)

在插入后返回标识表:

Create Table #Testing (  
    id int identity,  
    somedate datetime default getdate()  
)  
insert into #Testing  
output inserted.*  
default values   
Run Code Online (Sandbox Code Playgroud)

什么方法适当或更好?OUTPUT方法是否范围安全?

第二个代码片段是从Wild中的SQL借来

sql t-sql sql-server identity output-clause

59
推荐指数
5
解决办法
9万
查看次数

使用Query为现有表生成SQL创建脚本

我需要能够为SQL Server 2008中的现有表获取CREATE脚本.我假设我可以通过以某种方式查询sys.tables来执行此操作,但是这不会返回给我CREATE脚本数据.

sql t-sql sql-server

59
推荐指数
5
解决办法
13万
查看次数

如何在SQL Server查询中排除周末天数?

如何排除DateTime星期六或星期日列中的值?

例如,给出以下数据:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-28 09:00:00'  -- Saturday
'2009-11-29 09:00:00'  -- Sunday
'2009-11-30 09:00:00'  -- Monday
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的结果:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-30 09:00:00'  -- Monday
Run Code Online (Sandbox Code Playgroud)

谢谢!

t-sql sql-server date weekend

59
推荐指数
4
解决办法
11万
查看次数

SQL Server:将多行组合成一行

我有这样的SQL查询;

SELECT * 
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602
Run Code Online (Sandbox Code Playgroud)

这就是结果;

在此输入图像描述

我想要的是; 显示在一行(单元格)中的所有组合,STRINGVALUE并用逗号分隔.像这样;

SELECT --some process with STRINGVALUE--
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602

Araç Listesi (C2, K1 vb.Belgeler; yoksa Ruhsat Fotokopileri), Min. 5
araç plakas? için ?nternet Sorgusu, Son 3 Y?la Ait Onayl? Y?l Sonu
Bilanço + Gelir Tablosu, Son Y?l (Y?l Sonuna ait) Detay Mizan?, ?çinde
Bulundu?umuz Y?la ait Ara Dönem Geçici Vergi Beyannamesi, Bayi Yorum
E-Maili, Proforma Fatura …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2008

59
推荐指数
4
解决办法
28万
查看次数

用于更新数据的SQL MERGE语句

我有一个名为数据的表 energydata

它只有三列

(webmeterID, DateTime, kWh)
Run Code Online (Sandbox Code Playgroud)

我在表中有一组新的更新数据temp_energydata.

DateTimewebmeterID保持不变.但是kWh值需要从temp_energydata表中更新.

如何以正确的方式编写T-SQL?

t-sql sql-server-2008

59
推荐指数
3
解决办法
10万
查看次数

如何在MIN或MAX中包含空值?

我有一个表,我正在存储时间跨度数据.该表的架构类似于:

ID INT NOT NULL IDENTITY(1,1)   
RecordID INT NOT NULL  
StartDate DATE NOT NULL  
EndDate DATE NULL  
Run Code Online (Sandbox Code Playgroud)

我正在尝试计算每个记录ID的开始和结束日期,因此最小StartDate和最大EndDate.StartDate不可空,所以我不需要担心这个,但我需要MAX(EndDate)来表示这是一个正在运行的时间跨度.

保持EndDate的NULL值并将其视为最大值非常重要.

最简单的尝试(下面)无法突出显示MIN和MAX将忽略NULLS的问题(来源:http://technet.microsoft.com/en-us/library/ms179916.aspx).

SELECT recordid, MIN(startdate), MAX(enddate) FROM tmp GROUP BY recordid
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个基本设置完成的SQL小提琴.

http://sqlfiddle.com/#!3/b0a75

如何根据我的意愿弯曲SQL Server 2008以从SQLFiddle中给出的数据产生以下结果?

RecordId  Start       End  
1         2009-06-19  NULL
2         2012-05-06  NULL
3         2013-01-25  NULL
4         2004-05-06  2009-12-01
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

59
推荐指数
4
解决办法
9万
查看次数

删除表中的所有行

Normaly我会做一个,delete * from XXX但是在这个表上非常慢,它通常有大约500k到1m的行(如果相关,则一个是varbinary(MAX)).

基本上我想知道是否有一个快速的方法来emty所有内容的表,它的实际更快删除并重新创建它然后通过删除sql语句删除内容

我不想重新创建表的原因是因为它的重用和删除/重新创建我认为会破坏sql server收集的索引和统计信息

我也希望有一种方法可以做到这一点,因为有一种"聪明"的方式来通过sys.sysindexes获取行数,所以我希望有一种同样聪明的方法来删除内容

t-sql sql-server

58
推荐指数
5
解决办法
11万
查看次数

=*是什么意思?

我正在尝试跟踪Microsoft Server中的一些SQL.我遇到了一个使用我不熟悉的约定的联接." =*"是什么意思?

WHERE table1.yr =* table2.yr -1
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server

58
推荐指数
5
解决办法
2万
查看次数

检查varchar是否为数字(TSQL)

有没有一种简单的方法来确定varchar是否是一个数字?

例子:

abc123 - >没有号码

123 - >是的,它是一个数字

谢谢 :)

t-sql numerical-methods

58
推荐指数
5
解决办法
12万
查看次数

从CTE更新表中的记录

我有以下CTE,它将为我提供整个发票的DocTotal.

 ;WITH CTE_DocTotal
 AS
 (
   SELECT SUM(Sale + VAT) AS DocTotal
   FROM PEDI_InvoiceDetail
   GROUP BY InvoiceNumber
 )

UPDATE PEDI_InvoiceDetail
SET DocTotal = CTE_DocTotal.DocTotal
Run Code Online (Sandbox Code Playgroud)

现在有了这个结果,我想在PEDI_InvoiceDetail中输入DocTotal值列.

我知道不会工作,我知道我错过了什么,它是什么?

sql t-sql sql-server common-table-expression

58
推荐指数
3
解决办法
11万
查看次数