小编Dev*_*art的帖子

为什么这两个查询获得相似的时间(超过2百万行,大约52秒)

我正在使用SQL Server 2008.

我需要你的建议,为什么这两个查询得到相似的时间(超过2百万行约52秒):

查询1:

DBCC DROPCLEANBUFFERS

DECLARE @curr INT
SET @curr = YEAR(GETDATE())

SELECT MAX([Date])
FROM DB_Item
WHERE YEAR([Date]) = @curr
Run Code Online (Sandbox Code Playgroud)

查询2:

DBCC DROPCLEANBUFFERS

SELECT MAX([Date])
FROM DB_Item
Run Code Online (Sandbox Code Playgroud)

使用实际执行计划,我看到它扫描Clustered Index scan.

那么,为什么我们有另一种方法可以Date迅速在1个表中获得最大值?

非常感谢您的帮助.

谢谢.

sql sql-server sql-server-2008

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

必须声明标量变量错误

这与我的上一个问题有关.我有这个代码:

DECLARE @PatientId UNIQUEIDENTIFIER
DECLARE @FormId NCHAR(16)
DECLARE @columns VARCHAR(8000)
DECLARE @query VARCHAR(8000)

SET @PatientId = '3387F956-EA0A-4660-8647-1096E25A3C6F'
SET @FormId = 'form111'

SELECT @columns = COALESCE(
        @columns + ',[' + RTRIM(AttributeGroup) + '_' + RTRIM(AttributeId) + ']',
        '[' + RTRIM(AttributeGroup) + '_' + RTRIM(AttributeId) + ']'
    )
FROM DVItems
WHERE PatientId = @PatientId AND FormId = @FormId
GROUP BY AttributeGroup, AttributeId

SET @query = '
SELECT * 
FROM( 
    SELECT
        PatientId,
        RTRIM(AttributeGroup) + ''_'' + RTRIM(AttributeId) AS ColName,
        FormId,
        Description
    FROM DVItems …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

计算出勤时间差

我有一个表格,下面的示例输出.

UserID  Checktime              CheckStatus
3175    2013-12-22 07:02:10.000     I
3175    2013-12-22 13:01:01.000     O
3175    2013-12-22 13:49:54.000     I
3175    2013-12-22 13:49:55.000     I
3175    2013-12-22 15:58:42.000     O
3175    2013-12-23 06:02:58.000     I
3175    2013-12-23 14:00:29.000     O
3175    2013-12-24 05:17:09.000     I
3175    2013-12-24 12:34:25.000     O
3175    2013-12-24 12:34:26.000     O
Run Code Online (Sandbox Code Playgroud)

我想构建一个查询来实现以下结果:

UserID  Date       CheckIn   CheckOut Hours
3175    2013-12-22 07:02:10  13:01:0  5.98
3175    2013-12-22 13:49:54  15:58:42 2.15
Run Code Online (Sandbox Code Playgroud)

注意:1.忽略重复的IN.原始数据中的第三行和第四行.2.分钟数小时为小时计算中的小时.

我需要tsql查询的帮助才能获得这些结果.

我当前的代码导致了许多其他问题 - 因为每次都必须在临时表中重新计算.

sql t-sql sql-server sql-server-2005 date

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

在SQL Server 2014中列出数据库和表空间

我如何列出每个数据库SQL Server 2014和表空间大小?

我测试了这个查询

EXEC sp_spaceused null, false
Run Code Online (Sandbox Code Playgroud)

但我只得到一个数据库的结果.

t-sql sql-server sql-server-2014

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

SQL Server如何将列值转换为行

我会尝试解释我的问题.

我的表结构:

name Code_1 Code_1_value Code_2 Code_2_value Code_3 Code_3_value
N1    ABC1        10      ABC2       15       ABC3        6
N2    ABC1        3       NULL      NULL      BAA1        10
N3    ABC4        5       ABC2       11       ADC3        6
Run Code Online (Sandbox Code Playgroud)

我想将这些值转换为新格式:

name    code    value
N1      ABC1      10
N1      ABC2      15
N1      ABC3      6
N2      ABC1      3
Run Code Online (Sandbox Code Playgroud)

我不知道逻辑应该如何(枢轴?)

sql t-sql database sql-server unpivot

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

从SQL字符串拆分Multipile分隔符

如何用(#和;)拆分SQL字符串?

Billing Column,其中字符串以下面的格式保存

548784545S#15/01/2016;84854555545#13/01/2016;45454554545#21/01/2016
Run Code Online (Sandbox Code Playgroud)

拆分#和; 我想要下面的格式

548784545S    15/01/2016
84854555545  13/01/2016
45454554545  21/01/2016
Run Code Online (Sandbox Code Playgroud)

到目前为止我做了什么

SELECT SUBSTRING(CNT_SHIPPING_BILLNO, 1,
            CASE CHARINDEX('#', CNT_SHIPPING_BILLNO)
               WHEN 0
                   THEN LEN(CNT_SHIPPING_BILLNO)
               ELSE CHARINDEX('#', CNT_SHIPPING_BILLNO) - 1
           END)
       AS Billno,
       SUBSTRING(CNT_SHIPPING_BILLNO,
           CASE CHARINDEX('#', CNT_SHIPPING_BILLNO)
               WHEN 0
                   THEN LEN(CNT_SHIPPING_BILLNO) + 1
               ELSE CHARINDEX(';', CNT_SHIPPING_BILLNO) + 1
           END, 1000) AS BillDate
FROM SHIPPINGBILL
Run Code Online (Sandbox Code Playgroud)

在这里,我只使用上面的查询获得初始值

548784545S    15/01/2016;84854555545#13/01/2016;45454554545#21/01/2016
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

转换为datetime - DateTime列,其中包含日期和nvarchar列以及时间

我有一个Date Date,它是Datetime类型.我有一个nvarchar列,里面有时间.例如:

    Date(datetime)                            Time(nvarchar)
-----------                                  ----------
2010-06-08 00:00:00.000                         17:30
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它们连接到2010-06-08 17:30:00.000作为日期时间对象.提前致谢.

sql sql-server sql-server-2005

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

使用Group By返回超过1个值的子查询

我有一些问题用这个表和代码创建查询,我知道"GROUP BY Branch.BranchName"导致获得多个记录,但是,如何避免这种情况并在单个查询中执行此操作.我想要得到的是一个包含BranchName的表 - total paidedvalue-- total notpayedvalue

SELECT
    (
        SELECT SUM (DeptDesciption.DeptValue)
        FROM dbo.SudentPayments
            INNER JOIN dbo.Student ON dbo.SudentPayments.StudentId = dbo.Student.StudentId
            INNER JOIN dbo.DeptDesciption ON SudentPayments.DeptDesciptionId = DeptDesciption.DeptDesciptionId
            INNER JOIN dbo.Branch on dbo.Branch.BranchId = Student.BranchId
        WHERE SudentPayments.IsDeptPayed = 0
        GROUP BY Branch.BranchName
    ) AS Payed,
    (
        SELECT SUM (DeptDesciption.DeptValue)
        FROM dbo.SudentPayments
            INNER JOIN dbo.Student ON dbo.SudentPayments.StudentId = dbo.Student.StudentId
            INNER JOIN dbo.DeptDesciption ON SudentPayments.DeptDesciptionId = DeptDesciption.DeptDesciptionId
            INNER JOIN dbo.Branch on dbo.Branch.BranchId = Student.StudentId
        WHERE SudentPayments.IsDeptPayed = 1
        GROUP BY Branch.BranchName …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

为什么我不能在SQL中创建这个表?

CREATE TABLE AverageStudents 
AS 
     (SELECT * 
      FROM StudentData 
      WHERE GPA > 3.0);
Run Code Online (Sandbox Code Playgroud)

我一直在收到错误

Incorrect syntax near the keyword 'AS'.
Run Code Online (Sandbox Code Playgroud)

我的简单代码对你来说是否合适?我真的想要一张桌子(不是视图,感谢建议).

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

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

在存储过程中使用动态sql中的临时表

我正在 SQL Server 2012 中编写存储过程。我有一个像这样定义的临时表:

  DECLARE @CURRENT_RET_WEEK_PTIMEIDS TABLE ( PTIMEID INT )
Run Code Online (Sandbox Code Playgroud)

我还EXECUTE用来编写动态 SQL 查询。有什么办法可以将此表加入上述临时表吗?

sql-server stored-procedures dynamic-sql sql-server-2012

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