我有一个函数,它在调用时返回以下信息:
select * from functionName(null, '1 jan 2016', '30 dec 2016')
输出:
pcode PayoutDate
100 2016-02-28 00:00:00:000
100 2016-05-31 00:00:00:000
100 3016-08-31 00:00:00:000
100 3016-11-30 00:00:00:000
103 2016-02-28 00:00:00:000
103 2016-05-31 00:00:00:000
103 3016-08-31 00:00:00:000
103 3016-11-30 00:00:00:000
我们会在 2 月底、5 月、8 月和 11 月底向客户付款。
所以我想要实现的是让每个月都有自己的日期,如下所示:
pcode May August November
100 2016-05-31 00:00:00:000 3016-08-31 00:00:00:000 3016-11-30 00:00:00:000
103 2016-05-31 00:00:00:000 3016-08-31 00:00:00:000 3016-11-30 00:00:00:000
如何拆分数据集以反映如上所示?
我真的不知道如何解决这个问题,任何人有任何想法吗?
用 PIVOT
SELECT * FROM
(SELECT pcode, datename(month, PayoutDate) AS Month, PayoutDate FROM yourtable) a
PIVOT
(MIN(PayoutDate) FOR Month IN ([May], [August], [November]))b
输出
pcode May August November
100 2016-05-31T00:00:00Z 3016-08-31T00:00:00Z 3016-11-30T00:00:00Z
103 2016-05-31T00:00:00Z 3016-08-31T00:00:00Z 3016-11-30T00:00:00Z
SQL小提琴:http ://sqlfiddle.com/#!6/9ed49/11/0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句