MS SQL 2000 取每一组的三位最低数据 SQL 语句怎么写啊 并且行转列

delphi_abc 2009-07-01 10:16:13
我想取每个分组里面最低的价格的那三个价格,每一组里面的数据有可能是一个也有可能是10个,如果多余三个就取最低的三个,如果小于等于3个就全部取出来少的用0代替,并且还要把取出的数据转换成列的而形式

结果如:
编码 最低价一 最低价二 最低价三
aaa 0.1 0.2 0
bbf 1 0 0
..........
...全文
19 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_abc 2009-07-02
  • 打赏
  • 举报
回复
楼上的,谢谢了啊。
liangCK 2009-07-01
  • 打赏
  • 举报
回复
--2005

;WITH LiangLoveLan AS
(
SELECT rowid=ROW_NUMBER() OVER(PARTITION BY 分组 ORDER BY 价格),*
FROM tb
)
SELECT
分组,
ISNULL([1],0) AS 最低价一,
ISNULL([2],0) AS 最低价二,
ISNULL([3],0) AS 最低价三
FROM (
SELECT rowid,分组,价格 FROM LiangLoveLan WHERE rowid <= 3
) AS A
PIVOT(MAX(价格) FOR rowid IN([1],[2],[3])) AS pvt
liangCK 2009-07-01
  • 打赏
  • 举报
回复
SELECT
分组,
MAX(CASE WHEN rowid=1 THEN 价格 ELSE 0 END) AS 最低价一,
MAX(CASE WHEN rowid=2 THEN 价格 ELSE 0 END) AS 最低价二,
MAX(CASE WHEN rowid=3 THEN 价格 ELSE 0 END) AS 最低价三
FROM (
SELECT rowid=(SELECT COUNT(*)+1 FROM tb
WHERE 分组= A.分组 AND 价格 < A.价格),*
FROM tb AS A
) AS T
WHERE rowid <= 3
GROUP BY 分组;

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧