标签: t-sql

如何将sp_executesql结果转换为变量?

我有一个我需要执行的动态SQL,然后我需要将结果存储到变量中.

我知道我可以使用,sp_executesql但无法找到关于如何做到这一点的明确例子.

t-sql dynamic-sql

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

当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式

我的查询如下,并在其中包含一个子查询:

 select count(distinct dNum)
 from myDB.dbo.AQ
 where A_ID in 
  (SELECT DISTINCT TOP (0.1) PERCENT A_ID, 
            COUNT(DISTINCT dNum) AS ud 
 FROM         myDB.dbo.AQ
 WHERE     M > 1 and B = 0 
 GROUP BY A_ID ORDER BY ud DESC)
Run Code Online (Sandbox Code Playgroud)

我收到的错误是......

Only one expression can be specified in the select list when the subquery is not
introduced with EXISTS.`
Run Code Online (Sandbox Code Playgroud)

当我单独运行子查询时,它返回正常,所以我假设主查询存在一些问题?

sql t-sql sql-server exists

164
推荐指数
5
解决办法
41万
查看次数

如何以编程方式更改标识列值?

我有一个Test带有列的表的MS SQL 2005数据库ID.ID是一个标识列.

我在这个表中有行,并且所有行都有相应的ID自动增量值.

现在我想更改此表中的每个ID,如下所示:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我收到一个错误:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

我试过这个:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题.

我需要将标识设置为此列,但我还需要不时更改值.所以我的问题是如何完成这项任务.

t-sql sql-server identity sql-server-2005 sql-server-2005-express

160
推荐指数
6
解决办法
31万
查看次数

如何使用SQL Server Management Studio创建复合键?

如何使用SQL Server Management Studio创建复合键?

我想要两个INT列来形成表的标识(唯一)

sql t-sql sql-server ssms key

160
推荐指数
7
解决办法
16万
查看次数

Linq to Sql:多个左外连接

我在使用LINQ to SQL找出如何使用多个左外连接时遇到了一些麻烦.我理解如何使用一个左外连接.我正在使用VB.NET.下面是我的SQL语法.

T-SQL

SELECT
    o.OrderNumber,
    v.VendorName,
    s.StatusName
FROM
    Orders o
LEFT OUTER JOIN Vendors v ON
    v.Id = o.VendorId
LEFT OUTER JOIN Status s ON
    s.Id = o.StatusId
WHERE
    o.OrderNumber >= 100000 AND
    o.OrderNumber <= 200000
Run Code Online (Sandbox Code Playgroud)

t-sql linq vb.net left-join linq-to-sql

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

如何按小时或10分钟分组

就像我一样

SELECT [Date]
  FROM [FRIIB].[dbo].[ArchiveAnalog]
  GROUP BY [Date]
Run Code Online (Sandbox Code Playgroud)

我该如何指定小组期?

MS SQL 2008

第二次编辑

我尝试着

SELECT MIN([Date]) AS RecT, AVG(Value)
  FROM [FRIIB].[dbo].[ArchiveAnalog]
  GROUP BY (DATEPART(MINUTE, [Date]) / 10)
  ORDER BY RecT
Run Code Online (Sandbox Code Playgroud)

将%10更改为/ 10.是否可以在没有毫秒的情况下进行日期输出?

sql t-sql group-by sql-server-2008

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

我想使用CASE语句更新sql server 2005中的一些记录

UPDATE dbo.TestStudents  
SET LASTNAME = 
( CASE  
WHEN (LASTNAME = 'AAA') THEN 'BBB' 
WHEN (LASTNAME = 'CCC') THEN 'DDD' 
WHEN (LASTNAME = 'EEE') THEN 'FFF' 
ELSE  (LASTNAME)
END )
Run Code Online (Sandbox Code Playgroud)

该语句适用于此目的,但else条件扫描表中的每条记录.有什么方法可以保留未受影响的行吗?

sql t-sql sql-server sql-update

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

如何使用SQL语句计算百分比

我有一个包含用户及其成绩的SQL Server表.为简单起见,我们只想说有2列 - name&grade.所以一个典型的行是Name:"John Doe",等级:"A".

我正在寻找一个SQL语句,它将找到所有可能答案的百分比.(A,B,C等......)另外,有没有办法在没有定义所有可能的答案的情况下这样做(开放文本字段 - 用户可以输入'通过/失败','无'等...)

我要找的最终输出是A:5%,B:15%,C:40%等等......

sql t-sql sql-server

158
推荐指数
8
解决办法
79万
查看次数

计算SQL Server中的运行总计

想象一下下表(称为TestTable):

id     somedate    somevalue
--     --------    ---------
45     01/Jan/09   3
23     08/Jan/09   5
12     02/Feb/09   0
77     14/Feb/09   7
39     20/Feb/09   34
33     02/Mar/09   6
Run Code Online (Sandbox Code Playgroud)

我想要一个以日期顺序返回运行总计的查询,例如:

id     somedate    somevalue  runningtotal
--     --------    ---------  ------------
45     01/Jan/09   3          3
23     08/Jan/09   5          8
12     02/Feb/09   0          8
77     14/Feb/09   7          15  
39     20/Feb/09   34         49
33     02/Mar/09   6          55
Run Code Online (Sandbox Code Playgroud)

我知道在SQL Server 2000/2005/2008中有各种方法可以做到这一点.

我对使用aggregate-set-statement技巧的这种方法特别感兴趣:

INSERT INTO @AnotherTbl(id, somedate, somevalue, runningtotal) 
   SELECT id, somedate, somevalue, null
   FROM TestTable
   ORDER …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server running-total

158
推荐指数
8
解决办法
23万
查看次数

在SQL中获取最少两个值

我有两个变量,一个是调用PaidThisMonth,另一个是调用OwedPast.它们都是SQL中某些子查询的结果.如何选择两者中较小的一个并将其作为标题值返回PaidForPast

MIN函数适用于列,而不是变量.

t-sql sql-server

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