2
A
回答
1
事情是这样的:
测试数据
CREATE TABLE #tbl(date_a DATE,date_e DATE, vals FLOAT)
INSERT INTO #tbl
VALUES
('2/29/2012','1/1/2013',28.47),
('2/29/2012','2/1/2013',27.42),
('2/29/2012','3/1/2013',24.36),
('3/1/2012','1/1/2013',28.5),
('3/1/2012','2/1/2013',27.35),
('3/1/2012','3/1/2013',24.39),
('3/6/2012','1/1/2013',27.75),
('3/6/2012','2/1/2013',26.63),
('3/6/2012','3/1/2013',23.66)
查询
SELECT
*
FROM
(
SELECT
tbl.date_a,
tbl.date_e,
vals
FROM
#tbl AS tbl
) AS SourceTable
PIVOT
(
SUM(vals)
FOR date_e IN ([1/1/2013],[2/1/2013],[3/1/2013])
) AS pvt
DROP TABLE #tbl
编辑
如果你不知道有多少列,那么你需要做一个动态的pivot
。就像这样:
独特的列
DECLARE @cols VARCHAR(MAX)
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY date_e ORDER BY date_e) AS RowNbr,
tbl.*
FROM
#tbl AS tbl
)
SELECT @cols=STUFF
(
(
SELECT
',' +QUOTENAME(date_e)
FROM
CTE
WHERE
CTE.RowNbr=1
FOR XML PATH('')
)
,1,1,'')
动态枢
DECLARE @query NVARCHAR(4000)=
N'SELECT
*
FROM
(
SELECT
tbl.date_a,
tbl.date_e,
vals
FROM
#tbl AS tbl
) AS SourceTable
PIVOT
(
SUM(vals)
FOR date_e IN ('[email protected]+')
) AS pvt'
EXECUTE(@query)
相关问题
- 1. PostgreSQL的交叉表/透视问题
- 2. 交叉表/透视查询上nvarchar列
- 3. 在晶体报告交叉表报告中添加序列号
- 4. 如何创建如下报告的交叉表报表?
- 5. 透视表(交叉表报表)中的Java EE Web应用程序
- 6. 水晶报表交叉表
- 7. 交叉检查SQL服务器报告
- 8. 如何交叉报表
- 9. 从动态交叉表查询和vba访问报告“手动”生成报告
- 10. 格式交叉表
- 11. rails db中立数据透视表或交叉表
- 12. SQLite数据透视表和交叉表查询
- 13. 如何获得表格中的交叉点?
- 14. 如何在EPPlus中将数据透视表报告布局设置为表格?
- 15. 设计报告透视 - eclipse rcp
- 16. 水晶透视数据报告8节
- 17. 用于生成交叉表报告的库?
- 18. 贾斯珀报告交叉表添加参数
- 19. 如何为交叉表报告编写mysql?
- 20. 将共享变量从主报告传递到交叉表?
- 21. 使用交叉表创建每日报告
- 22. 保持相同数量的列在交叉表报告
- 23. Postgres的 - 与多个值列数据透视表/交叉
- 24. 水晶报表交叉突出
- 25. closedxml数据透视表报告过滤器默认值
- 26. 如何获得基础数据的主报告报表
- 27. 如何获得高分提交/报告给Game Center排行榜?
- 28. iOS PDF表格与报告
- 29. Oracle PL/SQL中的交叉表/数据透视表 - iBatis - Extjs和JasperReport
- 30. C#报告控制(交互式报告)
负载的感谢,它的工作没有缺陷。一旦时钟达到两分钟屏障就会接受它:) – 2012-04-17 10:50:58
没问题。很高兴帮助:P ..我给你添加了一个奖励例子:P ..请看看。 – Arion 2012-04-17 10:54:29
这就是真棒!对不起请求更多.. :)谢谢很多陛下.. – 2012-04-17 11:14:43