我有SQL Server Express 2008.如何在其中设置表的关系?
SQL Server新手在这里.
UPDATE dbo.ObjectivesApproved
SET dbo.ObjectivesApproved.VAP = 'Y'
WHERE ((dbo.Approved.Cri_Group In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14')))
Run Code Online (Sandbox Code Playgroud)
出现以下错误
The multi-part identifier "dbo.Approved.Cri_Group" could not be bound.
Run Code Online (Sandbox Code Playgroud)
是什么导致错误?
更新:上述查询是试错的结果.我正在更新一个Access应用程序到SQL服务器,并与SQL略有不同的方言有一些麻烦
这是我原来的查询.
UPDATE dbo.Approved
INNER JOIN dbo.ObjectivesApproved ON dbo.Approved.ID = dbo.ObjectivesApproved.ID
SET dbo.ObjectivesApproved.VAP = 'Y'
WHERE ((dbo.Approved.Cri_Group
In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14')));
Run Code Online (Sandbox Code Playgroud)
这会产生错误 - 关键字"INNER"附近的语法不正确
谢谢
我有一个xml列,我想在相邻的列中保留一个节点计数.
例如,在下面给出的xml中,我有3个节点a,所以我想输出它.
但是,我遇到的问题是我无法创建一个通用的模式绑定函数,该函数将使用@xml和@nodeName以返回指定节点的计数.
create function dbo.fnXmlCount_a (@xml xml)
returns int with schemabinding
as begin
return (@xml.value('count(//a)', 'int'))
end
declare @xml xml;
set @xml = '
<r>
<a></a>
<b></b>
<a></a>
<c>
<a></a>
</c>
</r>'
select dbo.fnXmlCount_a(@xml) aCount
Run Code Online (Sandbox Code Playgroud)
最后一次操作的结果是:
aCount
3
Run Code Online (Sandbox Code Playgroud)
然后我在该表上创建一个具有此xml字段的列,如下所示:
alter table [XmlTable] add column [aCount] as (dbo.fnXmlCount_a([xml])) persisted
Run Code Online (Sandbox Code Playgroud)
但我真正想做的是:
alter table [XmlTable] add column [aCount] as (dbo.fnXmlNodeCount([xml], 'a')) persisted
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:
我们都知道这//很慢,所以如果你能弄清楚如何通过这条路径来搜索另一个变量,那就太好了.默认情况下,此搜索路径将是//.
我在SQL Server上有程序!现在,是否可以从该过程创建dll,如果可以,我该怎么做?
谢谢!
当前查询:
SELECT order_id AS OrderNumber, ordName, ordLastName, question, answer
FROM cart_survey
JOIN orders
ON cart_survey.order_id=orders.ordID
JOIN survey_answers
ON survey_answers.id=cart_survey.answer_id
JOIN survey_questions
ON survey_questions.id=cart_survey.question_id
Run Code Online (Sandbox Code Playgroud)
结果:
OrderNumber ordName ordLastName question answer 8591 Larry Marshburn Type of Surgery: Colostomy 8591 Larry Marshburn Month of Surgery: 2 8591 Larry Marshburn Year of surgery: 2010 8591 Larry Marshburn Current Ostomy System Brand: ConvaTec 8591 Larry Marshburn Degree of Satisfaction: Somewhat Satisfied 8593 Melvin Belcher Type of Surgery: Urostomy 8593 Melvin Belcher Month of …
也许我试图为了自己的利益而过于聪明,我可能会使用标量变量来解决这个问题.我正在尝试从子查询中添加1到我的输出;
INSERT INTO bookrevisiontbl (revisionnum, bookdate)
SELECT SUM(MAX(revisionnum) + 1), GETDATE() FROM bookrevisiontbl_tbl
Run Code Online (Sandbox Code Playgroud)
但是会发生以下错误
无法对包含聚合或子查询的表达式执行聚合函数.
这个查询是否可行,并且可以维护
我遇到了数据库的问题,似乎列的更新值错误.目前,我不知道哪个程序正在执行此操作.找到这个的最佳方法是什么?可以帮助我的事情是:
交易日志可以帮助我吗?我能以某种方式编写日志记录触发器吗?
帮助将不胜感激.
如果我们想在插入的记录中Col3包含一个常量字符串'Foo',如何修改以下存储过程?
INSERT Table2
(Col1,
Col2,
Col3)
SELECT T1Col1,
T1Col2
FROM Table1
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的存储过程,它接受三个参数'数据库名称一个','数据库名称二'和'表名称'.然后,sql将为每个数据库中的已定义表执行行计数并存储它.
零碎的工作我遇到了第一个你不能做的问题
select * from @tablename
Run Code Online (Sandbox Code Playgroud)
我知道你可以在exec命令中使用动态sql,但这并不理想,因为我无法返回值.
以下示例看起来应该可以工作但不会.
declare @tablename as nvarchar(500)
declare @sqlstring as nvarchar(500)
declare @parmdefinition as nvarchar(500)
declare @numrows as bigint
set @tablename = N'dummy_customer'
set @parmdefinition = N'@tablenameIN nvarchar(500), @numrowsOUT as bigint OUTPUT'
select @sqlstring = 'select @numrowsOUT = count(*) from @tablenameIN'
select @sqlstring
exec sp_executesql @sqlstring, @parmdefinition, @tablenameIN = @tablename, @numrowsOUT = @numrows OUTPUT
select @numrows
Run Code Online (Sandbox Code Playgroud)
给出的错误信息是
Msg 1087, Level 16, State 1, Line 1
Must declare the table variable "@tablenameIN".
Run Code Online (Sandbox Code Playgroud)
目前使用的是SQL Server …
是否可以在varchar列上使用类似DATEADD()或DATEPART()的函数,该函数可能包含也可能不包含类似日期时间的内容?
目前我正在尝试使用WHERE子句来仅选择此列中具有日期时间值的行并获得通常的算术溢出错误.
我可以执行某种操作来提取日期时间值并将它们放在临时表中,但我对此很好奇.
例
SELECT DATEPART(wk, DateCreated) FROM tblOrders WHERE colType = 'datetime'
Run Code Online (Sandbox Code Playgroud)
不要担心桌子设计,它没有那么糟糕.