标签: sql-server-2014

在SQL server中使用case

我正在尝试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 sql-server sql-server-2014

1
推荐指数
1
解决办法
168
查看次数

如何在SQL Server中备份存储过程?

上一次使用SQL Server 2014时,突然由于电源故障而导致数据库损坏,下一次运行DBCC CHECKDB之后,我发现我在SQL Server上创建的一些存储过程仍然丢失。因此,有什么方法可以为存储过程创建成功的备份?

sql sql-server sql-server-2014

1
推荐指数
1
解决办法
1万
查看次数

如何锁定一行以便select只返回一次行?

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第二次可以是同一行.我该如何预防呢?

sql t-sql database sql-server sql-server-2014

1
推荐指数
1
解决办法
82
查看次数

在C#中使用ExecuteScalar访问列名?

我有一个存储过程,根据某些结果返回0或1.我经常手动执行这个程序,所以为了描述在SSMS中容易查看但在代码中仍然可读为0/1的成功/失败的描述,我选择0或1作为不同的列名,即SELECT 0 AS ThisReasonSELECT 0 AS ThatReason.

几乎可以肯定有更好的方法来解决这个问题,但它让我很好奇 - 在C#中使用ExecuteScalar时,是否可以读取你选择的列的名称?

c# t-sql stored-procedures executescalar sql-server-2014

1
推荐指数
1
解决办法
146
查看次数

SQL Server表创建错误:引用中没有主键或候选键

一个非常基本的脚本让我发疯.它说它找不到引用的密钥.不知道它是什么.我正在使用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 sql-server sql-server-2014

1
推荐指数
1
解决办法
319
查看次数

如何在SQL Server 2014中启用/安装全文搜索

这个问题可能有一个非常简单的答案,但我不知道我将如何在SQL Server 2014中启用全文搜索.

我在网上搜索过去几个小时,一些关于SQL Server 2012的帖子说它在安装过程中的功能,但我去了那里,我没有选择启用它.

自从我运行以来,它绝对没有启用或安装

select SERVERPROPERTY('IsFullTextInstall')
Run Code Online (Sandbox Code Playgroud)

得到了一个0.

为了进一步扩展,我创建了一个全文目录,但是如果我右键单击一个表,则全文索引选项将显示为灰色.

此外,如果我尝试运行创建全文索引命令,我会收到错误

未安装全文搜索,或无法加载全文组件.

full-text-search sql-server-2014

1
推荐指数
1
解决办法
8242
查看次数

在where子句中使用IIF语句

我试图使用以下代码将多个条件添加到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)

我相信这是一个快速的解决方案,但任何帮助将不胜感激.

sql where-clause sql-server-2014

1
推荐指数
1
解决办法
4187
查看次数

循环N表列并将连接的字符串插入同一行

我有一个字符串列表,其中的连接值由分隔符分隔,如下所示:

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)

我可以将字符串拆分成多行.但是,如何拆分和循环临时表中的每一列以插入这些值?

t-sql sql-server-2014

1
推荐指数
1
解决办法
37
查看次数

如何通过按位操作符操作来执行SQL JOIN?

我们有一个SQL Server 2014包含两个表的数据库:

在此输入图像描述

在此输入图像描述

在Parts表中,BitColours是一个按位数,引用Colors表中的行.

我们被要求生成这样的查询:

在此输入图像描述

我从来没有做过这种类型的操作,所以会很感激任何指导.

谢谢

sql t-sql sql-server bit-manipulation sql-server-2014

1
推荐指数
1
解决办法
104
查看次数

如何将`sp_executesql`与'like`和'parameter`一起使用?

我不能让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)

t-sql sql-server stored-procedures sql-like sql-server-2014

1
推荐指数
1
解决办法
109
查看次数