以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] SQL查询语句 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=73686) |
-- 作者:ncefans -- 发布时间:2015/8/24 20:18:00 -- [求助] SQL查询语句 有一个"客户订单"表,列有: 订单日期,客户编号,品名,规格,销售单价,数量,税率. 要列出客户编号为"PD001",不同品名/规格,所对应最后一次订单的销售单价,数量,税率. SELECT DISTINCT 品名,规格 Fro m {客户订单} WHERE 客户编号=\'PD001\' 这个查询可以得到该客户编号的所有不同品名/规格的列表, 接下来, 应该怎么样把这个结果作为条件,得到下一步的结果呢? 谢谢!
|
-- 作者:大红袍 -- 发布时间:2015/8/24 20:28:00 -- 方法一:
Select 品名,规格, (select top 1 销售单价 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc), (select top 1 销售单价 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc) Fr om {客户订单} as a group by 品名,规格
方法二
select * fr om {客户订单} as a inner join (select 品名,规格, max(订单日期) as 订单日期 fr om {客户订单} group by 品名,规格) as b on a.品名 = b.品名 and a.规格 = b.规格 and a.订单日期 = b.订单日期 |
-- 作者:ncefans -- 发布时间:2015/8/24 20:32:00 -- 谢谢版主如此快的回复,我两种都测试一下.......SQL要加强学习中了. |
-- 作者:ncefans -- 发布时间:2015/8/24 20:49:00 -- 利用第一种方法, Select 品名,规格, (select top 1 销售单价 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc), (select top 1 数量 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc), (select top 1 税率 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc) Fr om {客户订单} as a group by 品名,规格得到了正确的结果. 生成五列: 品名,规格,column1,column2,column3.. 如何指定后三列的列名....正在百度中.....
|
-- 作者:ncefans -- 发布时间:2015/8/24 20:56:00 -- 方法一的完整语句是: Select 品名,规格, (select top 1 销售单价 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc) 销售单价, (select top 1 数量 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc) 数量, (select top 1 税率 fr om {客户订单} b where a.品名 = b.品名 and a.规格 = b.规格 order by 订单日期 desc) 税率 Fr om {客户订单} as a group by 品名,规格 再次感谢!
|