Declare @sec_temp table
(
sec_no varchar(10),
amount money,
price_date date
)
insert @sec_temp
values
('123ABC', 25, '2011-01-20'),
('123ABC', 25, '2011-01-19'),
('123ABC', 25, '2011-01-18'),
('123ABC', 20, '2011-01-17'),
('123ABC', 20, '2011-01-15'),
('123ABC', 22, '2011-01-13'),
('456DEF', 22, '2011-01-13'),
('456DEF', 30, '2011-01-11')
問題から前にアイテムの価格、分散を取得します。T-SQLクエリは、現在の価格と前の価格の日付
**sec_no current_Amount Current_Price_Date No_of_days_at_Current_price prior_amount prior_price_date No_of_days_at_prior_price**
123ABC 20 2011-01-20 19 20 2011-01-15 3
456DEF 22 2011-01-13 24 30 2011-01-11 2
現在のコード(current_price_dateとcurrent_amountのためのデータを取得します):
項目の金額は、前の電流量
結果に変化したとき、「前の価格は、」日付のように定義されます(cyberkiwiのおかげ)
select
sec_no,
amount,
No_of_days_at_price = 1 + DATEDIFF(d, min(price_date), max(price_date))
from (
select *,
ROW_NUMBER() over (partition by sec_no order by price_date desc) rn,
ROW_NUMBER() over (partition by sec_no, amount order by price_date desc) rn2
from @sec_temp
) X
WHERE rn=rn2
group by sec_no, amount
これまでに書いたコードを投稿してください。人々は一般的にあなたのためのコードを書くのが好きではありません。それはそのままで、これは仕事の説明であり、質問ではありません。 –
私は現在のコードで私の質問を編集しました – startEnd
あなたは(有益な情報が提供されている)多くをアップヴォートすることができますし、それを受け入れるための答えに尋ねることができます(質問者の正しさの承認) – RichardTheKiwi