T-Sql erhalten min und max Wert für jeden Tag

Ich versuche, eine Abfrage zu schreiben, in der ich für jeden Tag den Mindest- und Höchstpreis für jeden Artikel aus der Preistabelle erhalte.

In den Preisangaben werden die Tabellenpreise mehrmals am Tag festgelegt, sodass es viele Datensätze für dasselbe Datum gibt. Ich möchte also eine Tabelle, in der es für jedes Datum eine Zeile gibt, und dann diese Tabelle mit derselben Tabelle verbinden, sodass ich für jedes einzelne Datum den minimalen und maximalen Wert möchte.

USE [a_trading_system]
GO

/****** Object:  Table [dbo].[price_details]    Script Date: 07/01/2012 17:28:31 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[price_details](
    [price_id] [int] IDENTITY(1,1) NOT NULL,
    [exch_ticker] [varchar](8) NOT NULL,
    [price_set_date] [datetime] NOT NULL,
    [buy_price] [decimal](7, 2) NOT NULL,
    [sell_price] [decimal](7, 2) NOT NULL,
 CONSTRAINT [PK_price_detail] PRIMARY KEY CLUSTERED 
(
    [price_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,   ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[price_details]  WITH CHECK ADD  CONSTRAINT    [FK_price_details_Contract] FOREIGN KEY([exch_ticker])
REFERENCES [dbo].[Contract] ([exch_ticker])
GO

ALTER TABLE [dbo].[price_details] CHECK CONSTRAINT [FK_price_details_Contract]
GO

SQL-Abfrage

select distinct 
substring(convert(varchar(12),p1.price_set_date), 0, 12),
p2.exch_ticker,
(select MIN(buy_price) from price_details ),
(select MAX(buy_price) from price_details )
from price_details as p1

left join price_details as p2 on p2.exch_ticker = p1.exch_ticker 

where p1.exch_ticker = p2.exch_ticker

group by p1.price_set_date, p2.exch_ticker

Zusammenfassung

Tabelle hat viele Preise am selben Tag eingestellt. Min- und Max-Werte für jeden Tag für jeden Börsenticker.

Vielen Dank

Antworten auf die Frage(1)

Ihre Antwort auf die Frage