2
我正在嘗試編寫一個查詢,其中每天從價格詳細信息表中獲取每個項目的最低和最高價格。T-sql每天獲取最小值和最大值
價格明細表價格每天設置多次,所以同一日期有很多記錄。所以我想要一個表格,每個日期有一行,然後將該表格連接到同一個表格,以便爲每個不同的日期我想要最小值和最大值。
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查詢
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
摘要
表有許多價格在同一天成立。希望每個交易所股票的每日最小值和最大值。
感謝
工作。謝謝。我的團隊錯了嗎? –
您正在使用自連接,它會將N行變成N * N行。這可能是問題:) – Andomar
我的問題是它顯示最小和最大但不是每個exch_ticker。不管怎麼說,還是要謝謝你 –