首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义SQL GROUP BY子句

自定义SQL GROUP BY子句
EN

Stack Overflow用户
提问于 2012-01-27 02:29:12
回答 4查看 992关注 0票数 3

我有一个非常定制的SQL查询,我在实现时遇到了问题。我正在使用SQL-Server-2008。

我在这个查询中只有一个表,但我正在寻找非常具体的数据。此查询的要求为:

对于每个不同的PartNumber (列),我需要选择要选择的最新(最大) PO (列)。但是,还有另一个名为"Receipt“的列,如果它包含一个值,则应该一起排除PartNumber。

我对GROUP BY子句和用于选择的案例比较熟悉,但我不确定如何将我所知道的所有内容整合到一个有效的查询中……

任何帮助都是非常感谢的!预先感谢=)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-27 02:38:03

代码语言:javascript
复制
SELECT Partnumber, MAX(PO)
FROM MyTable t1
WHERE NOT EXISTS (SELECT 1
                  FROM MyTable
                  WHERE (Receipt <> '0'
                         OR Receipt <> '')
                  AND Partnumber = t1.partnumber)
GROUP BY PartNumber

这里的NOT EXISTS将排除具有部件号的任何行,该部件号在表中的任何位置填充收据。

票数 4
EN

Stack Overflow用户

发布于 2012-01-27 02:43:41

下面是反联接选项

代码语言:javascript
复制
SELECT t1.Partnumber, MAX(t1.PO)
FROM MyTable t1
     LEFT JOIN
      (SELECT DISTINCT PartNumber From MyTable
       WHERE  COALESCE(Receipt, '') = '') t2
     ON t1.Partnumber = t2.Partnumber
WHERE
     t2.Partnumber is null
GROUP BY t1.PartNumber
票数 2
EN

Stack Overflow用户

发布于 2012-01-27 02:40:26

代码语言:javascript
复制
SELECT MAX(PO)
FROM aTable
WHERE PartNumber NOT IN (
   SELECT PartNumber
   FROM aTable
   WHERE Receipt IS NULL
   GROUP BY PartNumber
   HAVING PartNumber IS NOT NULL /* fix */
)
GROUP BY PartNumber
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9023314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档