小编iam*_*ave的帖子

t-sql从带有变量名的字符串中获取变量值

有没有办法将@my_variable字符串转换为值@my_variable

我有一个存储变量名称的表.我需要获取此变量的值.像这样的东西:

DECLARE @second_variable AS NVARCHAR(20);
DECLARE @first_variable AS NVARCHAR(20);
SET @first_variable = '20';
SET @second_variable = SELECT '@first_variable'; --here I want that @second variable be assigned a value of "20".
Run Code Online (Sandbox Code Playgroud)

t-sql

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

TSQL选择逗号列表到行

如何在一行中输入逗号列表字段并将其显示在列中?

例如,

ID | Colour
------------
1  | 1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

至:

ID | Colour
------------
1  | 1 
1  | 2
1  | 3
1  | 4
1  | 5
Run Code Online (Sandbox Code Playgroud)

t-sql

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

按性能随机排序

top n通过随机顺序获取行的最佳方法是什么?
我使用的查询如下:

Select top(10) field1,field2 .. fieldn
from Table1
order by checksum(newid())
Run Code Online (Sandbox Code Playgroud)

上述查询中的问题是随着表大小的增加它会继续变慢.它将始终执行完整聚簇索引扫描以top(10)按随机顺序查找行.

还有其他更好的方法吗?

t-sql

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

选择*或单个列

两者之间的表现有什么不同

select *
from table name
Run Code Online (Sandbox Code Playgroud)

select [col1]
      ,[col2]
       ......
      ,[coln]
from table name
Run Code Online (Sandbox Code Playgroud)

t-sql

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

在INSERT期间,使用OUTPUT从表中返回新插入的Id和原始Id

我有一堆表需要克隆来自的子集.我已经使用了许多循环来递归地完成了这项任务,但是它很慢.

问题是表上的层次结构是使用INT IDENTITY(1,1)列结构的,这意味着我必须将旧Id的映射到新Id的等.

我希望能够批量克隆每个阶段并使用该OUTPUT语句执行此映射,但我无法实现此目的,因为我无法访问语句FROM中的OUTPUT表.下面的示例显示了我想要实现但不起作用的内容.

CREATE TABLE #NewIds (IdNew INT, IdOld INT)

INSERT INTO IdTest
OUTPUT inserted.Id, i.Id
INTO #NewIds
SELECT id
FROM IdTest i
WHERE id IN (SELECT Id FROM #IdTestsToClone)
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释如何使这个工作?

sql t-sql

5
推荐指数
0
解决办法
231
查看次数

如何在以下过程中使用ROW_NUMBER?

我有以下存储过程返回A,B和降序计数.我试图用ROW_NUMBER,这样我就可以页的记录,但我希望第一个行号1是具有最高计数的记录,所以基本上,如果我返回一个表3次的记录和计数30,20,10,再行号1应计对应30,行号2应与计数对应20,和行号3应与计数对应10. dbo.f_GetCount是一个返回计数的函数.

create procedure dbo.Test
as
@A nvarchar(300) = NULL,
@B nvarchar(10) = NULL
as

select @A = nullif(@A,'')
      ,@B = nullif(@B,'');

select h.A
      ,hrl.B
      ,dbo.f_GetCount(hrl.A,h.B) as cnt
from dbo.hrl
    inner join dbo.h
        on h.C = hrl.C
where(@A is null
      or h.A like '%'+@A+'%'
     )
     and (@B is null
          or hrl.B = @B …
Run Code Online (Sandbox Code Playgroud)

t-sql

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

对象权限-TSQL

我需要做以下事情:

  1. 检查是否Public或被guest授予对象的任何权限(数据库角色和服务器角色)
  2. 检查是否有任何用户被授予对象而不是角色的权限.
  3. 检查用户是否with grant具有对象的权限
  4. 检查谁有权访问扩展存储过程(我从中获取select name from sysobjects where xtype='X')

我认为他们都是相互关联的(但不知道如何).

对此可以有任何建议吗?
或者用有用的表格指导我?

任何帮助将非常感谢.

t-sql

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

将整数列表分配给@var

我可以:

declare @idOrder int
set @idOrder = 21319
Run Code Online (Sandbox Code Playgroud)

我想要:

declare @idOrder int
set @idOrder = (21319, 21320)
Run Code Online (Sandbox Code Playgroud)

用于'WHERE'子句使用IN运算符的一系列语句中

delete Orders
where idOrder in @idOrder
Run Code Online (Sandbox Code Playgroud)

代替

delete Orders
where idOrder in (21319, 21320)
Run Code Online (Sandbox Code Playgroud)

t-sql

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

我应该使用什么数据类型来存储小的十进制值

我应该使用什么数据类型来存储小的十进制值?从测距-50.0050.00

谢谢,

t-sql

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

求和除以Bigint,得到十进制精度的结果?

我在表中存储一个bigint值(用于文件大小).我需要分组一列和filesizes(以字节为单位).我希望有一个列显示GB.这意味着Sum(FileSize/1024/1024/1024)哪个没有显示任何小数位.我的研究似乎表明这可能是由于截断而不是舍入.

我已经尝试了许多选择castconvert,但似乎无法找到有关如何将任何信息sumdividebigint,保持小数.如果我将总和除以Excel,我得到小数,这告诉我必须有一种方法在SQL中执行此操作.

任何帮助表示赞赏.

t-sql

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

标签 统计

t-sql ×10

sql ×1