n********6 发帖数: 1511 | 1 Existing table1:ItemID has multiple dates.
ItemID, Date
1001, 1/25/2013
1001, 2/20/2013
1001, 2/27/2013
1002, 1/1/2012
...
1002, x/y/z
...
Notes:
# of 1001: m
# of 1002: n
...
Objective:
To pick up the two most recent dates.
ItemID, MostRecentDate1, MostRecentDate2
1001, 2/27/2013, 2/20/2013
1002, ...
...
This is from my job. I am NOT responsible for developing this. Just post it
for fun. | e****7 发帖数: 4387 | 2 --CREATE TABLE #t (
-- ITEMID INT,
-- Date DATE
--)
--GO
--INSERT #t VALUES (1, '01/01/2012')
--INSERT #t VALUES (1, '02/01/2012')
--INSERT #t VALUES (1, '03/01/2012')
--INSERT #t VALUES (1, '04/01/2012')
--INSERT #t VALUES (2, '04/05/2012')
--INSERT #t VALUES (2, '03/06/2012')
--INSERT #t VALUES (2, '02/07/2012')
--INSERT #t VALUES (2, '02/8/2012')
WITH RECORDS AS (
select *, ROW_NUMBER() OVER (partition by ITEMID order by DATE desc) RN
from #t
)
SELECT ITEMID, [1] AS MostRecentDate1, [2] AS MostRecentDate2 FROM RECORDS
PIVOT
(
MIN(DATE) FOR RN IN ([1], [2])
) AS P | B*****g 发帖数: 34098 | 3 PIVOT的performance怎么样
【在 e****7 的大作中提到】 : --CREATE TABLE #t ( : -- ITEMID INT, : -- Date DATE : --) : --GO : --INSERT #t VALUES (1, '01/01/2012') : --INSERT #t VALUES (1, '02/01/2012') : --INSERT #t VALUES (1, '03/01/2012') : --INSERT #t VALUES (1, '04/01/2012') : --INSERT #t VALUES (2, '04/05/2012')
| e****7 发帖数: 4387 | 4
一般服务器做几百万数据没问题。
【在 B*****g 的大作中提到】 : PIVOT的performance怎么样
| s****a 发帖数: 9912 | | n********6 发帖数: 1511 | 6 感谢大牛。
问题复杂化:
如果用户选择n个时间段,怎么实现?用pivot列出所有的,让用户自己挑?或者让用户
挑了以后传递变量进sp?谢谢。 | B*****g 发帖数: 34098 | 7 你先写个用pivot列出所有的看看
【在 n********6 的大作中提到】 : 感谢大牛。 : 问题复杂化: : 如果用户选择n个时间段,怎么实现?用pivot列出所有的,让用户自己挑?或者让用户 : 挑了以后传递变量进sp?谢谢。
| e****7 发帖数: 4387 | 8
code 可以写成dynamic 的,也不难
放不放人SP都行
【在 n********6 的大作中提到】 : 感谢大牛。 : 问题复杂化: : 如果用户选择n个时间段,怎么实现?用pivot列出所有的,让用户自己挑?或者让用户 : 挑了以后传递变量进sp?谢谢。
|
|