小编end*_*eka的帖子

运行更高级的查询时,对象关闭时不允许执行操作

当我尝试在 ASP 页上运行更高级的 SQL 查询时,出现以下错误:

对象关闭时不允许进行操作

当我运行此代码时,它正在工作:

...
sql = "SELECT distinct team FROM tbl_teams"
rs.open sql, conndbs, 1, 1
...
Run Code Online (Sandbox Code Playgroud)

但是当我运行此代码时(如果我在 Microsoft SQL Server Management Studio 中运行此代码则可以正常工作),我收到错误...

...
sql = "DECLARE     @cols AS NVARCHAR(MAX),     @query  AS NVARCHAR(MAX),     @orderby nvarchar(max),     @currentYear varchar(4)  select @currentYear = cast(year(getdate()) as varchar(4))  select @cols   = STUFF((SELECT  ',' + QUOTENAME(year([datefrom]))            from tbl_teams            group by year([datefrom])            order by year([datefrom]) desc             FOR XML PATH(''), TYPE             ).value('.', 'NVARCHAR(MAX)')         ,1,1,'')  select @orderby = 'ORDER BY ['+cast(year(getdate()) as varchar(4)) + …
Run Code Online (Sandbox Code Playgroud)

sql sql-server asp-classic

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

透视SQL表

我有一个带有"date"和"name"列的表.在这里你可以找到我的桌子样本:http://sqlfiddle.com/#!2/eddede/1

我需要做的是计算一个人每年有多少行.如果此人在X年没有值,则必须看到0.名称的顺序必须是当前年份DESC的总数,因此目前:2014年.

我可以指望每年/名字,但不确定我需要这个数据透视表:http://sqlfiddle.com/#!2/eddede/3

我希望结果看起来像这样:

NAME        2012    2013    2014   TOTAL
Person B      2       2       2      6
Person C      0       1       2      3
Person A      4       3       1      8
Run Code Online (Sandbox Code Playgroud)

我试过,但我得到这样的东西(所以我不发布错误的SQL查询......)

2012    2013    2014
  6       6       5 
Run Code Online (Sandbox Code Playgroud)

sql pivot-table sql-server-2008-r2

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

扩展当前查询,计算列

我的表看起来像这样的例子:

Name       date      result
 A      2012-01-01     1
 A      2012-02-01     2
 B      2013-01-01     1
         ...
Run Code Online (Sandbox Code Playgroud)

有关完整示例:http://sqlfiddle.com/#!3/00222/1

目前我有一个工作查询,按人和年计算行数:http://sqlfiddle.com/#!3/00225/32

这是完美的,但我想要的是2014年的一些额外信息.我需要计算每个结果我有多少行.这样的事情:

NAME       1   2   3   2014    2013    2012    TOTAL
Person B   4   0   2     6       2       2      10
Person A   2   1   1     4       3       4      11
Person C   1   1   1     3       1       0       4
Run Code Online (Sandbox Code Playgroud)

更好的是我给结果列一个好名字(1 =丢失,2 =抽奖,3 =赢):

NAME       lost   draw   won   2014    2013    2012    TOTAL
Person B    4       0     2     6       2       2      10
Person …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008-r2

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