易截截图软件、单文件、免安装、纯绿色、仅160KB

【转】 【SQL】行列转换

【SQL】行列转换
http://space.itpub.net/519536/viewspace-609167
一、列变行
1.创建测试表test,并初始化实验数据
sec@ora10g> create table test (name_id varchar2(10), name varchar2(10));
sec@ora10g> insert into test values ('01','Andy1');
sec@ora10g> insert into test values ('01','Andy2');
sec@ora10g> insert into test values ('01','Andy3');
sec@ora10g> insert into test values ('01','Andy4');
sec@ora10g> insert into test values ('02','Steven1');
sec@ora10g> insert into test values ('02','Steven2');
sec@ora10g> insert into test values ('02','Steven3');
sec@ora10g> insert into test values ('02','Steven4');
sec@ora10g> commit;
2.查看测试表数据
sec@ora10g> select * from test order by name_id;
NAME_ID    NAME
---------- ----------------------------------------
01         Andy1
01         Andy4
01         Andy3
01         Andy2
02         Steven1
02         Steven4
02         Steven3
02         Steven2
8 rows selected.
3.我们按照name_id不同值将该表横向转换如下
SELECT     t1.name_id,
           SUBSTR (MAX (SYS_CONNECT_BY_PATH (t1.NAME, ';')), 2) NAME
      from (SELECT a.name_id, a.NAME,
                   ROW_NUMBER () OVER (PARTITION BY a.name_id ORDER BY a.NAME) rn
              from TEST a) t1
START WITH t1.rn = 1
CONNECT BY t1.name_id = PRIOR t1.name_id AND t1.rn - 1 = PRIOR t1.rn
  GROUP BY t1.name_id;
NAME_ID  &nbs


相关文档:

sql 汉字转首字母拼音

从网络上收刮了一些,以备后用
create function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) b ......

sql触发器实现自动编号格式


使用触发器来实现
create table test(
id varchar(20),
sname varchar(20)
)
create TRIGGER [test_insert] ON [dbo].[test]
INSTEAD OF INSERT
AS
declare @str varchar(20)
declare @i integer
set @str = 'BV'+left(convert(char,getdate(),112),6)
select @i=isnull(max(cast(right(rtrim(id),len(id)-8 ......

SQL Server2005读取注册表

SQL Server2005读取注册表
DECLARE @result varchar(255)
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\OperationControlSystem\ClientID','Prefix',@result OUT ---注意必须有OUT否则@result为空
SELECT @result
假如在执行过程中出现错误,可能是未找到存储过程_master.dbo.xp_regread
原因:做安全 ......

SQL循环语句

SQL循环语句
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
---------------
while 条件
begin
执行操作
set @i=@i+1
end
WHILE
设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTI ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号