我正在尝试CASE在SQL Server中使用一个语句.我正在尝试更新ProfitUSD列中从Profit列中获取的值乘以列中的转换率Rate以获取ProfitUSD(ProfitUSD列).基本上,我只是试图通过乘以从Rate列中获取的相应转换率将利润转换为美元条款.
任何帮助将非常感激 :)
这里的问题是当我运行这个时,我收到以下错误:
消息512,级别16,状态1,行1
子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.该语句已终止
码:
update dbo.[5 Mins]
set ProfitUSD =
case
when Region='AEX 30 Netherlands' then Profit*(select rate from dbo.rates where Region='AEX 30 Netherlands')
when Region='ASX Australia' then Profit*(select Rate from dbo.rates where Region='ASX Australia')
when Region='Athens' then Profit*(select Rate from dbo.rates where Region='Athens')
when Region='Austria' then Profit*(select Rate from dbo.rates where Region='Austria')
when Region='Bahrain' then Profit*(select Rate from dbo.rates where …Run Code Online (Sandbox Code Playgroud) 上一次使用SQL Server 2014时,突然由于电源故障而导致数据库损坏,下一次运行DBCC CHECKDB之后,我发现我在SQL Server上创建的一些存储过程仍然丢失。因此,有什么方法可以为存储过程创建成功的备份?
SQL业余爱好者.
我有一张包含优惠券代码的表格:
id voucherCode UserId
------------------------
1 abcde 13
2 bcdef 11
3 cdefg
4 defgh
Run Code Online (Sandbox Code Playgroud)
现在,如果我的一个用户有资格获得优惠券代码,我会从我的表中获得一个:
SELECT TOP 1 * FROM tableName WHERE UserId IS NULL;
UPDATE tableName SET UserId = @UserID WHERE id = @SelectedIdFromAboveSelect;
Run Code Online (Sandbox Code Playgroud)
我必须确保每行只选择一次.如果多个用户需要凭证代码,则SELECT和之间存在小的时间差UPDATE.如果然后SELECT执行第二次,则SELECT第二次可以是同一行.我该如何预防呢?
我有一个存储过程,根据某些结果返回0或1.我经常手动执行这个程序,所以为了描述在SSMS中容易查看但在代码中仍然可读为0/1的成功/失败的描述,我选择0或1作为不同的列名,即SELECT 0 AS ThisReason或SELECT 0 AS ThatReason.
几乎可以肯定有更好的方法来解决这个问题,但它让我很好奇 - 在C#中使用ExecuteScalar时,是否可以读取你选择的列的名称?
一个非常基本的脚本让我发疯.它说它找不到引用的密钥.不知道它是什么.我正在使用SQL SERVER 2014,这个脚本用于创建我的数据库表.我正在尝试id_TABLE_1在表中TABLE_2引用表的id TABLE_1.
CREATE TABLE TABLE_1
(
id int identity,
email varchar(50) not null,
constraint PK_TABLE_1 primary key (id,email)
)
GO
CREATE TABLE TABLE_2
(
id int identity,
id_TABLE_1 int not null,
constraint PK_TABLE_2 primary key (id),
constraint FK_TABLE_2 foreign key (id_TABLE_1)
references TABLE_1(id) on delete cascade
)
GO
Run Code Online (Sandbox Code Playgroud)
错误是:
消息1776,级别16,状态0,行32
在引用的表'TABLE_1'中没有与外键'FK_TABLE_2'中的引用列列表匹配的主键或候选键.消息1750,级别16,状态0,行32
无法创建约束或索引.查看以前的错误.
你能帮帮我吗?
这个问题可能有一个非常简单的答案,但我不知道我将如何在SQL Server 2014中启用全文搜索.
我在网上搜索过去几个小时,一些关于SQL Server 2012的帖子说它在安装过程中的功能,但我去了那里,我没有选择启用它.
自从我运行以来,它绝对没有启用或安装
select SERVERPROPERTY('IsFullTextInstall')
Run Code Online (Sandbox Code Playgroud)
得到了一个0.
为了进一步扩展,我创建了一个全文目录,但是如果我右键单击一个表,则全文索引选项将显示为灰色.
此外,如果我尝试运行创建全文索引命令,我会收到错误
未安装全文搜索,或无法加载全文组件.
我试图使用以下代码将多个条件添加到SQL Server 2014中的Where子句,我收到语法错误.
我已经尝试了一个案例陈述,但根据本网站上的示例无法实现.
Where
iif(ss.DATAAREAID = 'USMF',
(ss.ITEMGROUPID like 'S%' and ss.ITEMGROUPID not like 'SMS%'),
(ss.ITEMGROUPID like 'SW%' and ss.ITEMGROUPID like 'SS%')
Run Code Online (Sandbox Code Playgroud)
我相信这是一个快速的解决方案,但任何帮助将不胜感激.
我有一个字符串列表,其中的连接值由分隔符分隔,如下所示:
DECLARE @stringlist NVARCHAR(MAX) = 'company_no,emp_no,emp_name,emp_type,salary_type....'
Run Code Online (Sandbox Code Playgroud)
我有一个带有动态数量的无名列的临时表,其中包含以下数据:
------------------------------
001 A01 John P A
001 A05 Mary P A
Run Code Online (Sandbox Code Playgroud)
我想拆分字符串并将每个拆分字符串插入一行中的每一列,如下所示:
-----------------------------------------------
company_no emp_no emp_name emp_type salary_type
001 A01 John P A
001 A05 Mary P A
Run Code Online (Sandbox Code Playgroud)
我可以将字符串拆分成多行.但是,如何拆分和循环临时表中的每一列以插入这些值?
我们有一个SQL Server 2014包含两个表的数据库:
在Parts表中,BitColours是一个按位数,引用Colors表中的行.
我们被要求生成这样的查询:
我从来没有做过这种类型的操作,所以会很感激任何指导.
谢谢
我不能让sp_executesql使用一个非常简单的语句.
当我这样做
select * from vwChassisHistory t where t.ChassisNumber like '%1234%'
Run Code Online (Sandbox Code Playgroud)
正如我所料,它会重新调整214行
但是当我这样做的时候
exec sp_executesql
N'select * from vwChassisHistory t where t.ChassisNumber like ''%@ChassisNumber%'' ',
N'@ChassisNumber varchar(4)',@ChassisNumber='1234'
Run Code Online (Sandbox Code Playgroud)
它返回0行
所以我必须在这里犯一个非常愚蠢的错误,但我看不到它.
如何使用sp_executesqla like和a parameter?
我注视在这,但是这个问题是关于动态地构建语句,以便它不会帮我
还这并不有我一个答案
编辑
为了SqlCommand在接受的答案中生成sql,我不得不修改代码
string chassisNumber = "1234";
string sql = "select * from vwChassisHistory t ";
string where += "where t.ChassisNumber like '%@ChassisNumber%' ";
Run Code Online (Sandbox Code Playgroud)
对此
string where = "where t.ChassisNumber like '%' + @ChassisNumber + '%' ";
Run Code Online (Sandbox Code Playgroud) sql-server-2014 ×10
sql ×6
sql-server ×6
t-sql ×5
c# ×1
database ×1
sql-like ×1
where-clause ×1