SQL 二次查询问题(2个Select查询)

micher_yan 2008-09-11 04:20:31
目的:在原表的基础上需要附加一个yyyyMMdd字段,该字段通过case字句从原表的BEGIN_LOAD_TIME字段转换得来,然后需要按yyyyMMdd进行分组查询,计算出一个月之内每天的统计数据。
计算并附加yyyyMMdd如下(注意:'19:30:00'条件会通过参数传入,且case字句的内容也有可能改变,即附加的yyyyMMdd字段是动态条件,无法固定):
SELECT *,CASE WHEN RIGHT(BEGIN_LOAD_TIME, 8) < '19:30:00' THEN LEFT(BEGIN_LOAD_TIME, 10) ELSE LEFT(CONVERT(varchar(19), dateadd([d], 1, CONVERT(datetime,BEGIN_LOAD_TIME)), 20), 10) END AS yyyyMMdd
FROM V_OUTPUT_HISTORY
请教:如何在附加yyyyMMdd字段的基础上进行再次的分组查询?
...全文
767 点赞 收藏 6
写回复
6 条回复
muyebo 2009年05月13日
学习
回复 点赞
micher_yan 2008年09月11日
见鬼了,我日,上午我也是按照1楼的思路写的,死活不行,刚想回帖否决1楼,想想还是试了一下。
居然成了,可能上午还是写错了。
感谢1楼!
回复 点赞
dawugui 2008年09月11日
[Quote=引用楼主 micher_yan 的帖子:]
目的:在原表的基础上需要附加一个yyyyMMdd字段,该字段通过case字句从原表的BEGIN_LOAD_TIME字段转换得来,然后需要按yyyyMMdd进行分组查询,计算出一个月之内每天的统计数据。
计算并附加yyyyMMdd如下(注意:'19:30:00'条件会通过参数传入,且case字句的内容也有可能改变,即附加的yyyyMMdd字段是动态条件,无法固定):
SELECT *,CASE WHEN RIGHT(BEGIN_LOAD_TIME, 8) < '19:30:00' THEN LEFT(BEGIN_LOAD_TIME, 10) ELSE…
[/Quote]
--哦,这样?

select yyyyMMdd , sum(某字段),avg(某字段),max(某字段) ...
(SELECT *,CASE WHEN RIGHT(BEGIN_LOAD_TIME, 8) < '19:30:00' THEN LEFT(BEGIN_LOAD_TIME, 10) ELSE LEFT(CONVERT(varchar(19), dateadd([d], 1, CONVERT(datetime,BEGIN_LOAD_TIME)), 20), 10) END AS yyyyMMdd
FROM V_OUTPUT_HISTORY
) t
group by yyyyMMdd
回复 点赞
dawugui 2008年09月11日
http://topic.csdn.net/u/20080911/14/86211090-5f32-40ac-be61-8e7d3d8cab2a.html?531352864

此贴的5楼.
回复 点赞
Garnett_KG 2008年09月11日


SELECT 字段列表....
FROM (
SELECT *,
CASE WHEN RIGHT(BEGIN_LOAD_TIME, 8) < '19:30:00' THEN LEFT(BEGIN_LOAD_TIME, 10)
ELSE LEFT( CONVERT(varchar(19),
dateadd([d], 1, CONVERT(datetime,BEGIN_LOAD_TIME)), 20)
,10)
END AS yyyyMMdd
FROM V_OUTPUT_HISTORY
) as Tmp
GROUP BY yyyyMMdd


回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9308

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告