group by的问题!

sdweihailh 2013-09-03 11:20:07
SELECT CustomerID, ItemNumber, ShippedQuantity
FROM dbo.FS_HistoryShipment
WHERE (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120)
= CONVERT(NVARCHAR(10), GETDATE() - 1, 120))

SELECT CustomerID, ItemNumber, sum(ShippedQuantity) as qty
FROM dbo.FS_HistoryShipment
WHERE (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120)
= CONVERT(NVARCHAR(10), GETDATE() - 1, 120))
GROUP BY CustomerID, ItemNumber


聚合时候,ItemNumber和CustomerID一样了。
但是其他的可以;搞不懂!SQL2005
...全文
192 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
XMPP 2013-09-03
  • 打赏
  • 举报
回复
去除前后空格,试试


SELECT     ltrim(rtrim(CustomerID)), ltrim(rtrim(ItemNumber)), sum(ShippedQuantity) as qty
FROM         dbo.FS_HistoryShipment
WHERE     (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120) 
                      = CONVERT(NVARCHAR(10), GETDATE() - 1, 120))
GROUP BY  ltrim(rtrim(CustomerID)), ltrim(rtrim(ItemNumber))
zbdzjx 2013-09-03
  • 打赏
  • 举报
回复
如果dbo.FS_HistoryShipment是视图,就有可能会这样了。 将这个视图打开,随便修改一下(如加个空格),再保存。再试上面的语句。
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
新建表执行没问题;我是在视图上执行的;按理也不至于这样啊。
韶之鱼 2013-09-03
  • 打赏
  • 举报
回复
我似乎记得,群组之前是不是要先排序啊,你order下啊
silwol 2013-09-03
  • 打赏
  • 举报
回复
是不是你机器上开的东西太多了。我有的时候因为开的东西太多,好像内存不够了,就会出一些莫名其妙的东西,比如一个select不显示结果,只给一句"Command(s) completed successfully.",之类的,一般多关些程序,重启sms就好了
  • 打赏
  • 举报
回复
不至于吧!! SQL Server不可能犯这种错误的。你好好检查你的代码
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
前后空格去掉后,还是一样。
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
不是啊;上面的是执行的代码;没错啊;有点奇怪啊!
--小F-- 2013-09-03
  • 打赏
  • 举报
回复
显然是你自己SELECT 的列填成和CUSTOMERID一样了啊 SQL SERVER不至于这样。
Andy__Huang 2013-09-03
  • 打赏
  • 举报
回复
SELECT rtrim(CustomerID), rtrim(ItemNumber), sum(ShippedQuantity) as qty
FROM dbo.FS_HistoryShipment
WHERE (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120)
= CONVERT(NVARCHAR(10), GETDATE() - 1, 120))
GROUP BY rtrim(CustomerID), rtrim(ItemNumber)

可能前后有空格,你这样试一下
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
这样可以,此视图从另一个视图来的,另一个视图存在很多自定义函数, ERP后台的,反正没找到原因,问题从侧面解决了。
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
select A,B,sum(c) as c from ( select convert(NVARCHAR(10),CustomerID) AS A,CONVERT(NVARCHAR(20),ItemNumber) AS B,ShippedQuantity as c from dbo.FS_HistoryShipment where (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120) = CONVERT(NVARCHAR(10), GETDATE() - 1, 120)) )z group by A,B
sdweihailh 2013-09-03
  • 打赏
  • 举报
回复
SELECT CustomerID ,ItemNumber , ShippedQuantity into #bb FROM dbo.FS_HistoryShipment WHERE (OrderType = 'C') AND (IssueType = 'I') AND (UserID = 'C14') AND (Stockroom = 'FG') AND (CONVERT(NVARCHAR(10), TransactionDate, 120) = CONVERT(NVARCHAR(10), GETDATE() - 1, 120)) select CustomerID ,ItemNumber , sum(ShippedQuantity) as qty from #bb group by CustomerID ,ItemNumber 这样插入临时表,再 group by 可以;但视图的问题出在哪?

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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