小编use*_*140的帖子

如果为正,则对所有项目求和。如果为负,则返回每一个

我需要找到一种方法来获取SUM()所有正值的所有正值num并返回SUM()所有正数的值和每个负数的单独行。下面是一个示例 DDL:

Create Table #Be
(
    id int
    , salesid int
    , num decimal(16,4)
)

Insert Into #BE Values
    (1, 1, 12.32), (2, 1, -13.00), (3, 1, 14.00)
    , (4, 2, 12.12), (5, 2, 14.00), (6, 2, 21.23)
    , (7, 3, -12.32), (8,3, -43.23), (9, 3, -2.32)
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出(每个 salesid 的正数SUM()和负数得到单独的一行返回):

salesid    num
1          26.32
1          -13.00
2          47.35
3          -12.32
3          -43.23
3          -2.32
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql

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

计算列或触发器

我们目前有一个 oninsert() 触发器设置,每次将行插入到表中时,都会触发更新查询以更新 3 个字段。这些字段是一个简单的计算,例如

field1update = (amt/12)*14
field2update = (amt/12)*16
field3update = (amt/12)*18
Run Code Online (Sandbox Code Playgroud)

触发器是足够的,但它有时会锁定该行,因此暂时无法立即访问它。我的问题是,如果将这些字段转换为(请原谅我的无知)计算列或计算列,我们会看到性能改进吗?

通常这是一个电子表格导入,一次插入大约 20,000 - 25,000 行。

performance sql-server t-sql sql-server-2008-r2 performance-tuning

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

SQL Server 2008 索引视图

我正在尝试添加schemabinding到 SQL Server 2008 中的视图,但出现错误

模式绑定对象中不允许使用语法“Openrowset/Openquery/Opendatasource”。

我使用Openquery是因为我正在查询链接服务器,这是我必须查询的方式。有解决方法吗?

这是我用我的观点尝试的语法

Create View dbo.Test
With Schemabinding
As

  Select * FROM OPENQUERY(191.183.18.101, 'Select * from ls1prod.hrinfo')

Go
Run Code Online (Sandbox Code Playgroud)

schema sql-server-2008 sql-server t-sql

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

基于变量执行计算的函数

我看到@ypercube 的回答??这对如何计算似乎是由 3 订购的数量并给出整数答案给出了很好的答案。这让我想到,如果要拆分的次数可变,您将如何处理?

这意味着这是你总是会被 3 分割的 OP(原始海报

Create Table #Orders 
(
    id int IDENTITY(1,1) PRIMARY KEY NOT NULL
    ,partid varchar(100) NOT NULL
    ,qtyordered int DEFAULT '0'
    ,orderedby varchar(100) NOT NULL
    ,ordereddate date DEFAULT GETDATE()
) ;

Insert Into #Orders (partid, qtyordered, orderedby) VALUES
('SS100', 10, 'James'), ('RR200', 5, 'Bob'), ('NN300', 3, 'Jake'), ('OO400', 5, 'Blue') ;

SELECT 
   partid,
   qtyordered,
   [First], 
   [Second],
   [Third] 
FROM 
    #Orders 
  CROSS APPLY
    ( SELECT [Third]  = (qtyordered)                      / 3 )  AS q3
  CROSS APPLY …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2

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

具有完整外部连接的 Where 子句

我可能只是设置我的查询完全不正确,但我需要返回的预期结果集是Nuestra B & Nosotros B因为它们分别属于日期范围。IE Nuestra Bfeeduedate >= '20160301' AND fj.feeduedate <='20160330'和 Nosotros Bfe.ViolationDate >= '20170601' AND fe.ViolationDate <= '20170606'它们就位。

但是,当我运行此查询以尝试返回结果时,我的结果集中返回了 0。

我的查询有什么问题?以下是示例数据和 DDL

    CREATE TABLE [dbo].[fei](
    [violatorsName] [varchar](500) NOT NULL,
    [violationNumber] [varchar](100) NOT NULL,
    [violationDate] [date] NOT NULL
) ON [PRIMARY]


CREATE TABLE [dbo].[FJI](
    [violatorsName] [varchar](500) NOT NULL,
    [VIN] [varchar](100) NOT NULL,
    [vfees1] [float] NOT NULL,
    [vfees2] [float] NOT NULL,
    [vfees3] [float] NOT NULL,
    [vfees4] [float] NOT NULL,
    [vfees5] [float] NOT NULL,
    [vfees6] …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2

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

帮助合并语句

我想比较表中的Distinct snfromHMI_Temp到-> 如果存在,我想更新值 - 得到这个语法检查!-如果确实存在,我想插入从数据到我都试过这个语法,但我得到的错误:snHMIsnsnHMI_TempHMI

无效的列名 'cb'
无效的列名 'lp'
无效的列名 cn
无效的列名 stn

这是我的语法 - 我应该如何重写它以实现我想要的结果?

MERGE INTO HMI AS Target
USING (SELECT DISTINCT sn FROM HMI_Temp) AS Source ON Target.sn = Source.sn
WHEN NOT MATCHED THEN
INSERT (lp, cb, cn, sn, stn) VALUES (Source.lp, Source.cb, Source.cn, Source.sn, Source.stn);
Run Code Online (Sandbox Code Playgroud)

DDL:

CREATE TABLE [dbo].[HMI_Temp]
(
    [sID] [int] IDENTITY(1,1) NOT NULL,
    stn [float] NULL,
    [sn] [nvarchar](255) NULL,
    [cn] [nvarchar](max) NULL, …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 merge

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

将 MDF 文件附加到 SSMS

我正在尝试将 .mdf 文件附加到我的 SSMS 安装中。我完成了这些步骤,最后我收到了这条消息。

是什么导致 .mdf 文件无法附加?

另外,我已经验证 .mdf 文件不是只读的。

在此处输入图片说明

编辑
如果我运行,Select @@Version我会得到我有 2008 年的输出,这是我的 .mdf 文件所需要的..

在此处输入图片说明

sql-server

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