[SQL ] Pivot的应用

楼主: BoyGeo (没事)   2016-08-22 11:36:48
数据库名称:MS SQL
数据库版本:2005
内容/问题描述:
各位前辈大家好,我有一个关于Pivot的应用想要请教大家
我想要应用客户的订单周期去算下次的预估交易时间
我的想法是a.去抓某客户的最近三笔订单成立时间
b.PIVOT转成横式算出交易周期
c.最后一笔订单加上交易周期算出下次预估交易时间
目前a的部分已经可以抓出来了,SQL语法如下
SELECT T1.[CardCode],T1.[CardName],T1.[DocDate] FROM ORDR T1
WHERE ( SELECT COUNT(*) FROM ORDR
WHERE [CardCode] = T1.[CardCode] and [DocNum] >= T1.[DocNum]
) <= 5
ORDER BY [CardCode],[DocNum] ASC
输出结果类似如下:
客户代码 客户名称 交易日期
ABC123 大同科技 2016-05-10
ABC123 大同科技 2016-06-12
ABC123 大同科技 2016-07-15
DEF456 世界实业 2015-06-05
DEF456 世界实业 2015-12-10
DEF456 世界实业 2016-03-12
GHI789 华连化工 2016-03-01
GHI789 华连化工 2016-05-01
希望能用PIVOT转成如下格式
客户代码 客户名称 交易日1 交易日2 交易日3
ABC123 大同科技 2016-05-10 2016-06-12 2016-07-15
DEF456 世界实业 2015-06-05 2015-12-10 2016-03-12
GHI789 华连化工 2016-03-01 2016-05-01 NULL
但是我不太懂PIVOT如何应用,想要请教各位前辈要如何转成如上所需横式格式
最终希望格式能如下
客户代码 客户名称 最后交易日 交易周期 预估下次交易日
ABC123 大同科技 2016-07-15 33 2016-08-17
DEF456 世界实业 2016-03-12 141 2016-07-30
GHI789 华连化工 2016-05-01 61 2016-07-01
应该还会有交易不满三笔时,最后交易日要怎么抓,不要抓NULL
然后怎么正确算出周期的问题
先请教如何PIVOT转横是后续我再来试试看好了,多谢各位指教
楼主: BoyGeo (没事)   2016-08-22 14:09:00
已解决,感谢cutekid大力协助还实作给我看,大感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com