小编mam*_*esh的帖子

具有多个值的CASE IN语句

有没有办法用IN子句制作CASE语句?

SELECT
CASE c.Number
IN ('1121231','31242323') THEN 1
IN ('234523','2342423') THEN 2
END AS Test
FROM tblClient c
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

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

1多个变量的SET语句,如declare语句

有没有办法用一个set语句设置所有变量,就像使用declare语句一样?

例如:

   Declare @Test VARCHAR(10),
                @Test2 VARCHAR(10),
                @Test3 INT

        SET @Test = 'test'
        SET @Test2 = 'Test2'
        SET @Test3 = 1
Run Code Online (Sandbox Code Playgroud)

我想在哪里做类似下面的事情,但下面的内容不起作用:

Set @Test = 'test',
    @Test2 = 'Test2',
    @Test3 = 3
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2005

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

使用2个日期参数之间的日期填充临时表的最简单方法

使用日期(包括2个日期参数之间)填充临时表的最简单方法是什么.我只需要每月的第一天约会.

例如,如果@StartDate ='2011-01-01'和@EndDate ='2011-08-01'

然后我希望在表格中返回

2011-01-01
2011-02-01
2011-03-01
2011-04-01
2011-05-01
2011-06-01
2011-07-01
2011-08-01
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005

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

调试代码时不会转换Web.config

我有一个主Web.config文件,下面有一个Web.Test.config,Web.Development.Config等等.

当我在Test config上通过SlowCheetah预览转换时,它似乎正确地转换了值.

当我将构建环境从开发切换到测试并尝试调试应用程序时,应用程序在主Web.config文件中的任何值下运行(即它不会转换任何内容).

如何使构建环境在调试时选择正确的配置而不是总是使用基本Web.config文件?这可能吗?

c# app-config visual-studio slowcheetah visual-studio-2015

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

添加时间23:59:59.999到结束日期之间

我一直遇到使用以下问题:

Column_Name BETWEEN @StartDate AND @EndDate. 
Run Code Online (Sandbox Code Playgroud)

这是因为@EndDate = 00:00:00.000的时间,它没有获取当天的所有值.

我如何将@EndDate(始终00:00:00.000)转换为始终为Date + 23:59:59.999?

sql sql-server sql-server-2005

19
推荐指数
5
解决办法
7万
查看次数

带逗号分隔的SQL逗号分隔行

我有以下查询:

SELECT
  Account,
  Unit,
  SUM(state_fee),
  Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit
Run Code Online (Sandbox Code Playgroud)

这当然会引发异常,因为代码不在group by条款中.每个state_fee都有一个代码.如何将此代码显示在1条记录中(每个state_fee 1个代码,即每个单元的多个state_fee)作为逗号分隔列表?我在这里查看了不同的解决方案,但我找不到任何有用的解决方案group by.

sql sql-server sql-server-2005 aggregate-functions sql-server-group-concat

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

这两个查询之间的最佳实践

我昨天参加了一个用户组会议,他们指出使用参数化查询比编码查询更好.这让我思考,这有什么好处(显然在比这更大的规模):

DECLARE @Client1 UNIQUEIDENTIFIER,
@Client2 UNIQUEIDENTIFIER
SET @ClientId1 ='41234532-2342-3456-3456-123434543212';
SET @ClientId2 = '12323454-3432-3234-5334-265456787654';

SELECT ClientName
FROM dbo.tblclient
WHERE id IN (@Client1,@Client2)
Run Code Online (Sandbox Code Playgroud)

相反:

SELECT ClientName
FROM dbo.tblclient
WHERE id IN ('41234532-2342-3456-3456-123434543212','12323454-3432-3234-5334-265456787654')
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

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

是否可以使用1个case语句返回多个列?

我有4个案例陈述完全相同的CASE标准,但它们都有不同的THEN/ELSE陈述.

是否可以将其全部合二为一,或者我是否需要将这些全部分开并多次复制和粘贴代码?

,CASE WHEN lm.Id IN ('1','2','3') THEN lm.name ELSE lm.Desc END AS [Column1]
,CASE WHEN lm.Id IN ('1','2','3') THEN '3' ELSE '1' END AS [Column2]
,CASE WHEN lm.Id IN ('1','2','3') THEN 'True' ELSE 'False' END AS [Column3]
Run Code Online (Sandbox Code Playgroud)

用更少的代码可以做到这一点吗?

sql t-sql sql-server

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

多次在select语句中调用标量函数会多次运行该函数,以及如何解决这个问题

如果我在各种计算中使用了带有标量函数的select语句,那么标量函数是否会被多次调用?如果是这样,有没有办法优化它,所以它只调用每个选择一次的函数,因为在我的真实查询中它将被调用数千次,每次选择X 6次.

例如:

SELECT 
[dbo].[fn_Days](@Account) + u.[DayRate],
[dbo].[fn_Days](@Account) / u.[WorkDays]
FROM [dbo].[tblUnit] u
Run Code Online (Sandbox Code Playgroud)

所有fn_days都返回一个工作日的int.

sql t-sql sql-server

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

插入空目标表时对逻辑进行读取

我试图找出为什么逻辑读取在目标表上执行时,当它是一个空白表时插入它.我有下表.

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Employee](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [EmployeeID] [int] NOT NULL,
      [EmployeeName] [varchar](50) NOT NULL
) ON [FG_Test]

GO

SET ANSI_PADDING OFF
GO
Run Code Online (Sandbox Code Playgroud)

这是一个空白表,ID为主键,该ID具有聚簇索引.当我使用以下插入语句时

TRUNCATE TABLE [dbo].[Employee];

INSERT INTO [dbo].[Employee] WITH (TABLOCK) (EmployeeID, EmployeeName)
(
SELECT EmployeeID,
     EmployeeName
FROM Process.Employee
);
Run Code Online (Sandbox Code Playgroud)

根据设置Statistics IO ON,我在dbo.Employee表上获得1596236个逻辑读取.当我删除索引时,这些逻辑读取不再发生,然后当我读取 - 添加完全相同的索引时,逻辑读取也不再发生.当我将索引保留在表上时,逻辑读取会再次开始.

为什么会这样?

sql sql-server ssms sql-server-2008

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