楼主: teqel
2343 2

请教一下,用SQL怎么实现转置? [推广有奖]

  • 0关注
  • 5粉丝

副教授

54%

还不是VIP/贵宾

-

威望
0
论坛币
170 个
通用积分
0.0016
学术水平
95 点
热心指数
101 点
信用等级
84 点
经验
30364 点
帖子
807
精华
0
在线时间
657 小时
注册时间
2010-3-1
最后登录
2021-8-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我知道用Proc Transpose 或者Data Step+Array都能实现。如果用SQL,请问怎么实现?

还有一个问题,如果下面一行减上面一行的值变成一个新变量,我们用lag()很容易实现,但是在SQL里怎么做?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sql Transpose Data step array Trans

沙发
sushe1527 发表于 2015-1-27 11:33:23 |只看作者 |坛友微信交流群
  1. data a;
  2. input code  x;
  3. datalines;
  4. 1         5
  5. 1         8
  6. 1         6
  7. 1         7
  8. 2         9
  9. 3         12
  10. 4          6
  11. ;
  12. run;

  13. proc sql;
  14.    select count(*) into :n from a;
  15.    create table b (drop=row) as
  16.    select mod(monotonic(), &n) as row,
  17.           case when calculated row =0 then &n
  18.                else calculated row end as n, * from a;
  19.    select n,code,x,
  20.    x-(select x from b new where new.n<t0.n and new.n>=t0.n-1) as diff
  21.    from b t0;
  22. quit;

  23.   
复制代码

使用道具

藤椅
teqel 发表于 2015-1-28 11:50:01 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-1-27 11:33
谢谢啊。
这么复杂?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 20:00