首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL group by 查询有关问题

2013-02-25 
SQL group by 查询问题。本帖最后由 PhillipChao460990988 于 2013-02-21 11:27:02 编辑IDItemNumberQuanti

SQL group by 查询问题。
本帖最后由 PhillipChao460990988 于 2013-02-21 11:27:02 编辑 ID      ItemNumber      Quantity            InDate
1       03-001-3901       10         2012-08-15 18:59:28.717
2       03-001-3901       20         2012-08-14 18:59:28.717
3       03-003-681        30         2012-09-15 18:59:28.717

我要按照 ItemNumber分组,然后取出最大的InDate,同时查询出MAX(InDate) 所对应的 Quantity 。

 要求结果如下:
ItemNumber      Quantity   InDate
03-001-3901       10     2012-08-15 18:59:28.717
03-003-681        30      2012-09-15 18:59:28.717

SELECT ItemNumber,
LastCountDate = MAX(UploadDate),
VarianceQuantity = MAX(VarianceQuantity)
FROM pwh.dbo.CycleCountUploadLog A WITH(NOLOCK)
GROUP BY ItemNumber 
ORDER BY ItemNumber

我写的取出来的Quantity 结果不对,这条SQL 应该怎么写呢? sql group?by
[解决办法]
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-02-21 11:30:24
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--Jun 17 2011 00:54:03 
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([ID] int,[ItemNumber] varchar(11),[Quantity] int,[InDate] datetime)
insert [huang]
select 1,'03-001-3901',10,'2012-08-15 18:59:28.717' union all
select 2,'03-001-3901',20,'2012-08-14 18:59:28.717' union all
select 3,'03-003-681',30,'2012-09-15 18:59:28.717'
--------------开始查询--------------------------

SELECT  *
FROM    [huang] a
WHERE   EXISTS ( SELECT 1
                 FROM   ( SELECT    ItemNumber ,
                                    MAX(InDate)[InDate]
                          FROM      huang
                          GROUP BY  ItemNumber


                        ) b
                 WHERE  a.ItemNumber = b.ItemNumber
                        AND a.InDate = b.[InDate] )
----------------结果----------------------------
/*
(3 行受影响)
ID          ItemNumber  Quantity    InDate
----------- ----------- ----------- -----------------------
1           03-001-3901 10          2012-08-15 18:59:28.717
3           03-003-681  30          2012-09-15 18:59:28.717

(2 行受影响)
 
*/

热点排行