当我尝试在 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) 我有一个带有"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) 我的表看起来像这样的例子:
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)