2017-04-03 11 views
-1

私はProductId、PriceType、Price、FromDate列を持っています。列内の日付を比較し、最新の日付に基づいて他の対応する列を印刷する方法

ここで、製品IDは異なる製品に付されたIDのリストであり、pricetypeは取引価格、卸売価格などの異なる価格のカテゴリであり、価格は各製品の金額です。

現在のところ、製品IDごとに複数のpricetypeがあります。& from date。

最新のFromDateに基づいて、各製品IDごとに価格タイプのカテゴリごとに固有の価格を設定する必要がある最終出力が必要です。

例では、商品ID 221には、2つの異なる価格の2つの値段と価格があります。現在の最終出力は、製品IDが221、日付が2014年1月7日、価格が19.8、価格が定価である必要があります。 TriVの答えは動作するはずです@

+0

私はStackoverflowを初めて使用しています。申し訳ありませんが、私は本当にあなたが私に尋ねたことをする方法を知っていません。私は元の質問に絵を付けました。私は、私が試している以下のクエリを追加しました。 ** 'ProductPrices.ProductId、ProductPrices.FromDate、ProductPrices.Price、PriceTypes.Id、PriceTypes.NameをPriceetype としてProductPricesから選択してください。外部結合PriceTypes on ProductPrices.PriceTypeId = PriceTypes.Id)x '** –

+0

知っていると参照されているリンク、完璧な質問をするにはhttps://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public -forum/ – TheGameiswar

+0

前のコメントで述べたクエリの出力が出ています。しかし、私はこの質問に悩まされています。 'FromDateによって#temp1グループからの#temp1.Priceからの#temp1.ProductId、#temp1.pricetype、max(FromDate)の選択、** –

答えて

0

この

;WITH temp AS 
(
    SELECT ProductId, PriceType, Price, t.FromDate , ROW_NUMBER() over(PARTITION BY ProductId, PriceType ORDER BY Fromdate DESC) AS RowIndex 
    FROM #ActualData 
) 
SELECT ProductId, PriceType, Price, FromDate 
FROM temp t WHERE t.RowIndex = 1 
+0

ありがとうございますTriV。私もあなたのクエリを試みたが、出力を得ることができませんでした。あなたの時間と労力のためにありがとうございました。 –

0

を試してみてください。もう一つの選択肢があります。両方を試してみると、データのパフォーマンスが向上しているかどうかを確認する必要があります。

select t.ProductId, t.PriceType, t.Price, t.FromDate 
from #temp1 t 
where exists(select 1 
      from #temp1 t2 
      where t2.ProductId = t.ProductId 
      and t2.PriceType = t.PriceType 
      group by t2.ProductId, t2.PriceType 
      having t.FromDate = max(t2.fromDate)) 
+0

こんにちはジェラード..あなたの応答に感謝します。ごめんなさい、私はSQLにも新しいです。ここで上記のクエリで 't.ProductId'と言ったのは、元のコメントごとに '#temp1.ProductId'と等しいですか? 'MyTable t'は '#temp1'と同じですか?ここではt2はどういう意味ですか? –

+0

申し訳ありません、#temp1テーブル名を使用するための回答を編集しました。 "t2"は、#where1のエイリアスで、 'where'節のサブクエリで使用されます。これは、#temp1の使用法を外側のクエリの#temp1( "t"としてエイリアスされている)と区別するために使用されます。 – Jerrad

+0

ありがとうございましたJerrad。あなたは救い主です。それは働いて、私は出力を持っています。私は過去4日間これと闘ってきました。もう一度ありがとう。あなたは私の一日を作った。 –

関連する問題