fer*_*vak 15 sql t-sql select group-by
我有这些字段组成的表格:
id | date_from | date_to | price
--------------------------------------------
CK1 22-12-2012 29-12-2012 800
CK1 22-12-2012 29-12-2012 1200
CK2 22-12-2012 29-12-2012 1400
CK2 22-12-2012 29-12-2012 1800
CK2 22-12-2012 29-12-2012 2200
Run Code Online (Sandbox Code Playgroud)
如何创建SQL选择按ID,DATE_FROM,DATE_TO分组结果并从价格中选择最低值.
结果就是这样
CK1 22-12-2012 29-12-2012 800
CK2 22-12-2012 29-12-2012 1400
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 22
select id, date_from, date_to, min(price)
from table
group by id, date_from, date_to
Run Code Online (Sandbox Code Playgroud)
如果你的dbms支持cte那么你可以这样做;
测试数据
DECLARE @tbl TABLE
(
id VARCHAR(100),
date_from VARCHAR(100),
date_to VARCHAR(100),
price INT
)
INSERT INTO @tbl
VALUES
('CK1','22-12-2012','29-12-2012',800),
('CK1','22-12-2012','29-12-2012',1200),
('CK2','22-12-2012','29-12-2012',1400),
('CK2','22-12-2012','29-12-2012',1800),
('CK2','22-12-2012','29-12-2012',2200)
Run Code Online (Sandbox Code Playgroud)
询问
;WITH CTE
AS
(
SELECT
RANK() OVER(PARTITION BY id ORDER BY price ASC) AS RowNbr,
tbl.*
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26430 次 |
| 最近记录: |