我已经看到在插入后检索主键标识字段的值时使用的各种方法.
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方法是否范围安全?
我需要能够为SQL Server 2008中的现有表获取CREATE脚本.我假设我可以通过以某种方式查询sys.tables来执行此操作,但是这不会返回给我CREATE脚本数据.
如何排除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)
谢谢!
我有这样的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) 我有一个名为数据的表 energydata
它只有三列
(webmeterID, DateTime, kWh)
Run Code Online (Sandbox Code Playgroud)
我在表中有一组新的更新数据temp_energydata.
在DateTime和webmeterID保持不变.但是kWh值需要从temp_energydata表中更新.
如何以正确的方式编写T-SQL?
我有一个表,我正在存储时间跨度数据.该表的架构类似于:
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) Normaly我会做一个,delete * from XXX但是在这个表上非常慢,它通常有大约500k到1m的行(如果相关,则一个是varbinary(MAX)).
基本上我想知道是否有一个快速的方法来emty所有内容的表,它的实际更快删除并重新创建它然后通过删除sql语句删除内容
我不想重新创建表的原因是因为它的重用和删除/重新创建我认为会破坏sql server收集的索引和统计信息
我也希望有一种方法可以做到这一点,因为有一种"聪明"的方式来通过sys.sysindexes获取行数,所以我希望有一种同样聪明的方法来删除内容
我正在尝试跟踪Microsoft Server中的一些SQL.我遇到了一个使用我不熟悉的约定的联接." =*"是什么意思?
WHERE table1.yr =* table2.yr -1
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来确定varchar是否是一个数字?
例子:
abc123 - >没有号码
123 - >是的,它是一个数字
谢谢 :)
我有以下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值列.
我知道不会工作,我知道我错过了什么,它是什么?