----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-11-26 08:49:28
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([NAME] varchar(1))
insert [huang]
select 'A' union all
select 'B' union all
select 'C'
--------------开始查询--------------------------declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename('NAME'+CONVERT(VARCHAR(2),ROW_NUMBER()OVER(ORDER BY GETDATE())))+'=max(case when [NAME]='+quotename([NAME],'''')+' then [NAME] else null end)'
from [huang] --group by[Course]
SET @s=SUBSTRING(@s,2,LEN(@s))
exec('select '+@s+' from [huang] ')
----------------结果----------------------------
/*
NAME1 NAME2 NAME3
----- ----- -----
A B C
*/
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-11-26 08:49:28
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([NAME] varchar(1))
insert [huang]
select 'A' union all
select 'B' union all
select 'C'
--------------开始查询--------------------------declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename('NAME'+CONVERT(VARCHAR(2),ROW_NUMBER()OVER(ORDER BY GETDATE())))+'=max(case when [NAME]='+quotename([NAME],'''')+' then [NAME] else null end)'
from [huang] --group by[Course]
SET @s=SUBSTRING(@s,2,LEN(@s))
exec('select '+@s+' from [huang] ')
----------------结果----------------------------
/*
NAME1 NAME2 NAME3
----- ----- -----
A B C
*/
解决方案 »
- 求助,一个关于group by和order by的问题
- 有没有什么办法可以将sql语句的值赋给变量?
- 金额格式转换,急用
- |zyciis| 我的查询语句在100W万数据的时候查询要4分钟 大家来帮我改改这个查询语句看如何最大化的来优化 谢谢 急
- 数据访问的实质
- 时间段,我想获得半年内和一个月内的数据,应该怎么写呢?拜托了!
- 再次请问zjcxc(邹建)bcp的问题
- 【求助】列名无效
- 昨天汇款去购买了程序员大本营数据库3.0版!希望大家能介绍该产品,不要让我失望!!
- 在sqlserver中varchar最长只能为8000么? 我要是想在数据库中存储一个>8000的字符串怎么办?谢谢
- 查询结果的默认排序问题
- 想请教一下怎么样更容易理解表之间的关系
CREATE TABLE #temp ([NAME] CHAR(1))
INSERT #temp
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'C'
godeclare @sql varchar(max),@sql2 varchar(max)
select @sql = ISNULL(@sql,'')+','+QUOTENAME([NAME])
,@sql2 = ISNULL(@sql2,'')+','+QUOTENAME([NAME])+' as '+QUOTENAME('NAME'+RTRIM(ROW_NUMBER() OVER(ORDER BY @@servername)))
from #temp
SET @sql='select '+STUFF(@sql2,1,1,'')+' from #temp a pivot (max([NAME]) for [NAME] in (' + STUFF(@sql,1,1,'') + ')) b'
exec (@sql)