我正在SQL语句中使用DATEDIFF。我正在选择它,我还需要在WHERE子句中使用它。这个声明不起作用
SELECT DATEDIFF(ss, BegTime, EndTime) AS InitialSave
FROM MyTable
WHERE InitialSave <= 10
它给出消息:无效的列名InitialSave
但这句话很好用
SELECT DATEDIFF(ss, BegTime, EndTime) AS InitialSave
FROM MyTable
WHERE
我想知道是否有一种方法可以使用TSQL join语句(或任何其他可用选项)只显示某些值。我会尽力解释清楚我的意思
我的数据库中有一些表,叫做Job、委托、dechead和decitem。Job、commit和dechead每个记录只有一行,但decitem可以有多个记录,所有记录都用外键绑定到dechead。我正在编写一个查询,从每个表中提取不同的值。除了decitem之外,所有的表都可以。从dechead我需要提取发票金额,从decitem我需要获取净发票金额。如果dechead有多个子dec
我在班次表中有以下描述班次的记录
ID, Description, Start Time, End Time
1, Morning, 06:00, 13:59
2, Afternoon, 14:00, 21:59
3, Night, 22:00, 05:59
我现在需要能够获得与过去时间相关的轮班记录,但仍需要获取夜班记录,夜班时间从午夜前开始,到第二天结束
查询此表以根据经过的时间获得正确班次的最简单方法是什么
TIA-Mike如果使用Datetime,它将包含日期,然后可以查询整个Date
标签: Tsql
sqlclrclrstoredprocedure
我有一个CLR存储过程,它将任意列中的值作为参数。要处理所有可能的列,请使用类型为的参数:
从类型为nvarchar(max)的列传入数据时,我得到:
“操作数类型冲突:nvarchar(最大值)为
与sql_变体不兼容”
如果参数是一个字符串,我可以将其声明为SqlChar或使用[SqlFacet(MaxSize=-1)]对其进行修饰,使其接受长度大于4000的列。对象是如何实现的?我不相信你能实现你正在尝试的目标。sql_变量的上边界为。SQL Server检测到您可能正试图将德克萨斯州塞进
我有一个运行非常慢的存储过程。因此,我想在一个单独的视图中提取一些查询
我的代码如下所示:
DECLARE @tmpTable TABLE(..)
INSERT INTO @tmpTable (..) *query* (returns 3000 rows)
Select ... from table1
inner join table2
inner join table3
inner join @tmpTable
...
然后,我提取(复制粘贴)该*查询*并将其放入一个视图中,即vView
我有两个单独的查询,我想合并它们,以便将两个查询的结果输出到一个表中
从下面的两个查询中,我想要一个包含以下列的表:
职员,全名,日数,月数
这样做的最佳方式是什么
SELECT TOP (10) COUNT(*) AS MonthCount, Staff.FirstName + Staff.LastName AS FullName, Staff.StaffID
FROM Sales INNER JOIN
Staff ON Sales.StaffID = Staff.StaffID LE
基本上,我需要从一个表中获取3列,并使用第一列的值将它们组合成字符串行
使用以下命令启动基本输出:
select ItemID, Month, Year
from tableA
where ID = @id
输出:
ItemID Month Year
1. 4 1 2012
2. 4 2 2012
3. 4 3 2012
4. 4 6 2012
5. 4 8 2012
6. 12 1 2012
7. 12 2 2012
8. 12 4 2
在下表中,我存储了如下一些条件:
然后,一般来说,在第二个表中,我有以下记录:
我需要的是使用正确的条件来比较这些值,并将结果存储在其他列中(假设“0”表示false,“1”表示true)
我将在一个存储过程中这样做,基本上我将比较几条到数百条记录
可能的解决方案是对构建动态语句的每一行使用sp_executesql,另一种是创建自己的标量函数,并使用交叉应用为每一行调用它
谁能告诉我哪种方法更有效
注意:我知道回答这个问题的最好方法是制作这两个解决方案并进行测试,但我希望基于缓存和SQL内
我有一个表,其中包含3个数据字段:Acct、YMCode和EmployeeID。YMCode是一个格式为201308,201307等的整数。对于每个Acct,我需要选择YMCode用于201308的EmployeedID,然后将账户的所有其他YMCodes更新为201308中使用的EmployeedID
因此,对于表中的每个客户帐户
Update MyTable
Set EmployeeID = EmployeeID used in YMCode 201308
很难处理它。将其放入事务中,并在
标签: Tsql
window-functions
找不到我需要的问题/答案,也找不到示例。我想使用一个窗口函数
我有以下模式保存存储的进程以及这些进程中使用的表和列:
CREATE TABLE [dbo].[ProcedureDependencies](
[DatabaseName] [varchar](256) NOT NULL,
[ProcedureId] [int] NOT NULL,
[ProcedureSchemaName] [varchar](256) NOT NULL,
[ProcedureName] [varchar](256)
我有一个如下表结构
DECLARE @XTable TABLE
(
ColA Varchar(20),
ColB Varchar(20),
DateCol DATE
)
INSERT INTO @XTable
VALUES
('A', 'X1', '4/1/2015'), ('A', 'X2', '4/10/2015'), ('A', 'X3', '4/12/2015'),
('A', 'X4', '4/16/2015'), ('B', 'X1', '5/18
首先,如果这个问题很常见,我道歉。。。我似乎找不到正确的搜索词
我有一个比较大的表,它有一个增量ID和一个插入的datetime值。它有两个索引,包括ID上的主键和插入时间和ID上的非聚集索引。因此,当我编写如下查询时,它非常快速:
select min(ID), max(ID)
from tbl
where inserted between '2015-10-07' and '2015-10-08'
但是,如果我对where子句条件进行变量化(如下所示),速度会慢一些:
declare @s
我想以编程方式删除一些可能存在或不存在的表。目标是安排一个作业。我可以把它放在SP中,使其成为一个手动过程,但我相信在可能的情况下实现自动化。我找到了这个,但我不知道如何让它工作。它只删除了一个表
我正在使用SQLServer2005
这是我基于上述链接所做的尝试:
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = N'DROP TABLE '
+ QUOTENAME(SCHEMA_NAME([schema_id]))
+ '.' + QUOTENAM
是否可以有条件地在TSQL(SSMS)窗口中的查询结果窗口中显示
例如,显示列标题和结果:
从[ourDatabase].[dbo].[ourTable]中选择COUNT(1)作为ourCount
仅当大于0时
注意:我们使用SQL Server 2008,r-2
这是在具有许多结果的更大查询系统的上下文中进行的。如果这个查询的值为零时,我不想把结果弄得乱七八糟。当然,这个概念可以推广到其他情况
因此,我正在监视查询输出,人们可以将结果视为对自己的“警告”(非正式) 这将把结果推送到一个变量中,
我试图从视图PayrollView以及提供的子部门DepartmentSecurityMode=2中获取父部门(如果存在)的记录。行根据父部门Id进行筛选。这是我尝试的,但它显示了错误
“子查询返回的值超过1个。如果子查询后跟=、!=、=或子查询用作表达式,则不允许这样做。”
非常感谢您的建议。您正在尝试一些奇怪的事情:使用(…)中的条件可以筛选项目列表中存在的记录。该列表可以是由逗号或子查询分隔的值。(据我所知)你把两者结合起来是不可能的
所以你必须把这两种技术分开
更新:
@JohnLBev
标签: Tsql
ssmssql-server-2016
我试图找到一个简单的列表,以及在特定隔离级别中可以使用哪些锁的一般解释
我的意思是我大体上知道:
读取提交隔离级别
用于读取的共享锁(选择)
用于写入的独占锁(插入、更新、删除)
阅读未提交:
没有共享锁-意味着多个进程可以同时访问一个资源
例如,在更改表的结构时,架构会锁定
可重复读取:
用于读取的共享锁
可序列化:
意图锁(锁定层次结构中的资源)
共享锁
密钥范围锁(读取或写入具有特定id密钥号的行)
快照-没有锁定行版本控制
你能帮我进一步加深理解吗?我投票赞成结束,因为这
我想删除从“@”到“;”的多个字符在SSIS中的派生列表达式中。
比如说,
我的输入列值是
并希望输出为
注意:“@”后面的长度不是固定的
已在SQL中尝试,但希望通过SSIS派生的列表达式执行此操作。首先:请不要发布图片。我们更喜欢复制和可复制的样本数据。请尽量提供一个最小的、完整的、可复制的示例,最好作为DDL、INSERT和代码,就像我在这里为您做的那样
还有一点:如果你控制输入,你不应该在一个字符串中混合信息。。。如果需要,请尝试使用“真实”的文本容器,如XML或JSON
SQL S
我有一个这样的样本数据表
Create Table #Test
(
fullname varchar(140)
)
Insert Into #Test Values ('Jose Mendez (ealica)'), ('Bob Smith (home)'), ('Frank Goza (webuser)')
FirstName = Jose
LastName = Mendez
我希望能够从字段中选择两个值firstname和lastname
像这样
Select
FirstNam
在Microsoft.M程序集中搜索时,我在Microsoft.TSQL10命名空间中找到了SourceParser类和整个类集,这些类似乎与解析SQL有关,但我找不到如何使用它的示例
我知道你可以很容易地生成T-SQL,但是你能使用它,操纵数据结构并重新输出SQL select的修改版本吗?答案显然是否定的。我在MSDN论坛上收到了对此的确认
我有一个ADO.NET/TSQL性能问题。我们的应用程序中有两个选项:
1) 使用多个结果集进行一次大型数据库调用,然后在代码中逐步遍历每个结果集并填充我的对象。这将导致数据库的一次往返
2) 多个小型数据库调用
选项2有更多的代码重用,这是该选项的一个优点。但我想了解性能成本是多少。两次小的往返速度是一次大的数据库往返速度的两倍,还是只是一个小的性能损失,比如说10%的性能损失?我们正在将C#3.5和Sql Server 2008与存储过程和ADO.NET一起使用。如果您非常关心性能,请尝试测
请参见截图:
目标:
我想让注释嵌套在1级深度
将对评论进行安排,以便对家长的评分按降序排列
孩子们的评价与此无关
屏幕截图的左侧显示了Id喜欢的输出。RHS显示表格数据。所有评论都保存在表1中
我是SQL查询的初学者,我能做的最好的事情是:
SELECT *
FROM [Comments]
WHERE ([ArticleId] = @ArticleId) ORDER BY [ThreadId] DESC, [DateMade]
这在一定程度上起到了作用,但显然忽略了评级。因此,上
我需要一些关于T-SQL查询的帮助。我想计算具有特殊值(例如>1)的字段
假设我有一张像这样的桌子:
IGrp | Item | Value1 | Value2
#############################
A | I11 | 0.52 | 1.18
A | I12 | 1.30 | 0.54
A | I21 | 0.49 | 2.37
B | I22 | 2.16 | 1.12
B | I31 | 1.50 | 0.28
对不起,我几乎是个SQL noob。这必须适用于MSFT SQL、Oracle以及Sybase。在下面的代码片段中,我需要将IJ和KL之间的内部连接在IJ.PO\u id=KL.PO\u id上更改为左连接也在IJ.PO\u id=KL.PO\u id上。因此,我认为我必须重新考虑这一点。嗯,隐式连接不是最可读的,至少在我的同事眼中是这样。我想我会同意的,直到我发展出自己的品味。对不起,为了以防万一,我弄坏了表名和字段名
/* @IJ_id is an input stored proc pat
我在我的经典asp页面中多次出现“无法更改源为命令对象的记录集对象的ActiveConnection属性”错误(0x800a0e7b),通常是在我刚刚更改存储过程之后
在过去,卸载和重新安装COM+应用程序以及重置IIS似乎可以解决此问题。我假设旧的ActiveConnection属性以某种方式保存在内存中,解决方法是将其清除。今天,没有这样的运气
所以我的第一个问题是,“这个错误到底意味着什么?”第二个问题是,“我如何修复它?”
我试着参考下面的链接,但作为一个COM+新手,这是我目前无法理解
在SQLServer2005数据库中,我有一个存储过程。我有约会,把他们放在临时桌上。我想在这个临时表中循环,根据一些字段的值更改其他字段的值并进行一些检查。每行我都要这样做
我该怎么做
谢谢
更新1
BEGIN
SET NOCOUNT ON
--Create temp table
CREATE TABLE #MyTempTable(
id int IDENTITY(1, 1),
PriceMax int,
我有以下查询链接服务器我必须交谈
挑选
*
从
OPENQUERY(DWH_链接“从表中选择*”)
它通常会返回大部分数据,但缺少一些行
linkeds服务器来自oracle客户端
这是任何人在使用openquery时遇到的问题吗?这似乎与底层提供程序功能有关,其他人也遇到了此问题以及类似的大小/行限制。一种可能的解决方法是实现一个迭代/循环查询,内置一些过滤功能,以收回一定数量的行。对于oracle,我认为这可能是使用rownum(对oracle不太熟悉)
大概是
--Not tested s
我正在学习我公司的一个新产品,数据库非常庞大
我正在做的是一个特征一个特征地学习,并通过它来理解代码和相关数据库的数据/功能/etc
我需要的:要查看最近对数据库/数据行所做的更改集,例如,在我创建新用户帐户后,我想查看在我创建新用户帐户后更新/创建了哪些新行
可能吗?如果是,请分享。谢谢大家!
Nam.我会用。在跟踪中,您可以看到客户端在创建新用户时所做的操作。当然,您通常不希望在prod上始终运行profiler(它可能是性能杀手)。因此,这不是应用程序的解决方案。我知道这张海报只是想了解数
在这个问题的范围内,我有3个实体:
用户
位置
许可证
然后我有两个关系(多对多)表:
PositionLicense-这一个连接了Position和License即特定职位需要哪些许可证
UserLicense-此选项将User与License连接起来,即特定用户拥有的许可证。但还有一个额外的复杂性:用户许可证具有有效日期范围(ValidFrom和ValidTo)
问题
这些是输入变量:
识别特定用户的UserID
RangeFrom定义日期范围下限
RangeTo定义了日期范围上限
我需
标签: Tsql
duplicatessql-update
我使用此查询以升序值更新列:
DECLARE @counter NUMERIC(10, 0)
SET @counter = 1400000
UPDATE SomeTable
SET @counter = SomeColumn = @counter + 1
问题是,我怎么能不把副本放在那里?例如,该列已将1400002作为值。通常它有空值,但有时没有。我可以补充一点
where SomeColumn is null
但这并不能避免重复。有什么想法吗
谢谢我不确定这是否有用,但您可以将现有数
大家好,我想知道是否有人能伸出援手;下面显示了这个tsql脚本,如果记录处于活动状态并且记录创建日期小于今天的日期,它当前将根据所有者id返回数据。然后我将数据分组在一起。我想要实现的是返回每个公司的最新记录
目前我返回的数据如下:
COMPANY A JOE BLOGS NULL 10088 Green NULL NULL 21/07/2007 16:57 Phone Call
COMPANY B JOE BLOGS NULL 10059 G
我正在尝试对某个仅存在于新查询(.SQL)中的T-SQL运行调试器。我从未尝试在此服务器上运行调试器。我们使用sa登录到这个开发服务器,我通过vpn远程工作
\当我尝试调试时,无法启动T-SQL调试。无法连接到计算机“servername”。登录失败:未知用户名或密码。
不知道如何解决这个问题。我可以运行查询,但无法调试。调试要求SSM作为Windows本地或域帐户运行,并且查询窗口本身必须使用Windows Auth或具有sysadmin角色的用户连接到服务器。既然你说的是“远程”和“vpn”
创建linq查询时,如下所示:
var ids = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var q = from r in context.Table
where ids.Contains(r.Id)
select r;
总的来说,这就是我所期望的,尽管它确实会搞乱“查询计划编译”,因为每个查询都是不同的,因此需要在执行之前进行编译
由于EF在其他方面非常擅长使用变量(@p_linq_)来
我有以下疑问:
SELECT I.InsuranceID
FROM Insurance I
INNER JOIN JobDetail JD ON I.AccountID = JD.AccountID
WHERE I.InsuranceLookupID IS NULL
AND JD.JobID = 28
它大约在一秒钟内执行。当用作子查询时,如下所示:
IF EXISTS(
SELECT I.InsuranceID
FROM Insurance I
INNER JOIN JobDetail JD
我从以前的对应方继承了一个存储过程,该存储过程使用链接服务器的用户定义函数。调用服务器使用sql server 2008,链接服务器使用sql server 2005,并与2000兼容
由于不允许从链接服务器调用UDF,他所做的就是在调用服务器上复制该函数。该函数接受一个参数并返回一个标量int值。它用于存储过程中的一个select列:
select
columnA,
columnB,
fn_Function(columnC) as columnC_Alias
from TableD
这一切
如何将列合并到一个表中
declare @map_old table(ID int not null)
insert into @map_old select 1
insert into @map_old select 2
declare @map_new table(ID int not null)
insert into @map_new select 11
insert into @map_new select 22
declare @map(ID int not null, ID
我正在尝试从Ubuntu12.04创建一个SQLAzure数据库
我已经下载了freeTDS-0.91,并用openssl和libiconf(用于tiny_tds gem)编译了它
当我尝试连接到sql azure db时,出现以下错误:
martinr@martinr-DT:~/code/psg-web$ tsql -U Username -P Password -H servername.database.windows.net -p 1433
locale is "en_ZA.UTF-8"
我很难弄明白为什么我的代码只有开始部分在执行。我在问题所在的地方插入了语句“--Nothing this point is executing”。任何帮助都将不胜感激
IF @i_numrecs = 0
BEGIN
SET @nextid = dbo.Timesheetgetnextid(@EMP, @DATE)
IF @mode = @c_current
BEGIN
INSERT INTO timedetail (
ppen
我想为AX 2012采集样本数据,并为数据类型的每个字段添加3年:datetime
我知道有dateadd函数,我可以单独更新每个字段,只是不知道如何搜索数据库,找到datetime类型的每个字段并执行更新
也许要建立一个包含所有这类字段的临时表
我对sql非常陌生,所以请保持温和…这将为每列提供一个单独的UPDATE语句
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'
UPDATE ' + QUOTENAME(OBJECT_SCHEMA
当我试图伪造一个使用用户定义数据类型的表时,出现了以下错误
COLLATE子句不能用于用户定义的数据类型。{,1}
看起来这是tSQLt中的一个已知问题
除了修改表定义外,还有解决方法吗?谢谢。感谢Chris Francisco,现在有一个补丁:
仅供参考,我遇到了同样的问题,并且能够通过挖掘来绕过它
在tSQLt代码中插入一点。有一个函数名为
Private_GetFullTypeName
函数返回的最后一列名为“Collation”,其中
如果变量@CollationName为null,则
有人知道一个简单的图表或列表可以显示所有可接受的varchar字符吗?我在谷歌上找不到这个 什么代码页?整理?Varchar存储采用特定代码页的字符。只有较低的127个字符(ASCII子集)是标准字符。较高的字符因代码页而异
使用的默认代码页与列的排序规则匹配,列的默认值继承自表、数据库和服务器。可以覆盖所有默认值
在排序中,没有“简单图表”。您必须检查特定代码页的字符表,例如,在Windows中使用“字符映射”实用程序
在存储到数据库时,使用Unicode和nvarchar要好得多。如果存储错
我将发布一个简单的示例:
SELECT " CAST(t.PurchaseDate AS DATE) AS PurchaseDate
FROM SomeTable t
ORDER BT PurchaseDate
如何确保ORDER BY使用PurchaseDate(仅日期部分),而不使用PurchaseDate表字段
我知道我可以将强制转换结果命名为PurchaseDate2(或其他名称),但我不认为这是一个非常直观的解决方案
SELECT " CAST(t.PurchaseDate AS D
我想根据dtStart和dtEnd中的日期差异从1行生成多行
-- This is demo table to show the issue
create table #temp(Id int,hTenant int , dtStart datetime,dtEnd datetime)
Insert into #temp values(1,8,'2013-01-08 00:00:00.000','2014-01-01 00:00:00.000')
查询返回的数据如下:-
**Id** *
我试图通过列week获得累计总和,如果可能的话,然后在我的查询中获得按列数据$ADTE排序的结果:
select
A.Castka "Amount",
'Cashflow' as N,
A.Datum$DATE "Datum",
cast(A.Rok as varchar(4)) + '-' + cast(A.Tyden as varchar(4)) "Week"
from iGateCashflow A
where
1 = 1
假设t-sql中的select语句返回
John Smith | Chicago | a
John Smith | Chicago | f
John Smith | Chicago | j
Josh Dude | Houston | p
Josh Dude | Houston | s
我希望它能回来
John Smith | Chicago | a, f, j
Josh Dude | Houston | p, s
如何做到这一点?本文的前半部分是一个代码和图像密
我需要在一天中捕捉多个变化,但如果立即发生,则消除重复。
下面是示例数据片段。
来源数据:
SEQ_ID ID LastName FirstName Updated_Time
50 1010 A A 01/06/2016 10:00
51 1010 B B 01/06/2016 11:00
52 1010 C C 01/06/2016 12:00
53 1010 D D 01/06/2016 15:00
54 101
我正在疯狂地尝试将字符串类型的列转换为日期
列名为StartDate,其中包含字符串日期格式dd/mm/yyyy。字段类型为varchar3000
我尝试了以下方法:
CONVERT(datetime, StartDate, 103)
CAST(CONVERT(VARCHAR(10), StartDate, 110) AS DATE)
CONVERT(DATE, RIGHT(StartDate, 4) + '-' + SUBSTRING(StartDate, 4, 2) + '-' + LE
我有这样的语法:
ROW_NUMBER() OVER (PARTITION BY PId, VDate ORDER BY VDate) As RowNum
当我查看结果集时,我看到许多具有相同PId和相同VDate的2行的实例-当我预期为1和2时,它们都具有RowNum 1
我已尝试将我的按VDate排序更改为按其他日期排序列。。。没有区别
问题:
我的语法有问题吗
对于具有相同PId和VDate的每一行,是否要求我的Order By中的日期必须不同
数据本身是否还必须满足其他一些基本要求
谢
我正在尝试更新类型化XML中的属性。在过去,我通过在非类型化对象中构建XML,然后将其设置为类型化对象来实现这一点(这样可以避免这个问题),但我想知道如何直接修改类型化数据
我的模式是:
if exists (select [xml_collection_id]
from sys.[xml_schema_collections] as [xsc]
where [xsc].name = 'xsc_test_stack'
我正在研究一个数据集。
我只是想知道是否有一种方法可以在下面的1个查询中进行排序
Select * From MyTable where name ='international%' order by id
Select * From MyTable where name != 'international%' order by id
因此,首先显示所有国际项目,然后显示不以国际开头的名称
我的问题不是要添加列来实现这一点,也不是要使用多个DB,或者使用largerTSQL脚本将DB克隆到新的
我有一个查询试图另存为视图,但SSMS返回一个错误,指出有多个同名列
我尝试将受影响的列重命名为别名,但没有成功
每个视图或函数中的列名必须是唯一的。多次指定视图或函数“vwBlocks”中的列名“codemanQuestionID”
create view vwBlocks as
SELECT
LUConstructionType.codemanOptionID AS LUConstruction_codemanOptionID
, LUFascias.codemanO
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 157 页