我有一个非常自定义的SQL查询,在执行时遇到了问题。我正在使用SQL-Server-2008。

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

对于每个DISTINCT零件号(列),我需要选择要选择的最新(最大)PO(列)。但是,还有一个名为“Receipt”的列,如果该列完全包含一个值,则应该将PartNumber一起排除。

我对选择的GROUP BY子句和CASES有点熟悉,但是我不确定如何将我所知道的全部结合到一个有效的查询中...

任何帮助是极大的赞赏!在此先感谢=)。

最佳答案

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将排除部件号在表中任何位置填充了收据的任何行。

10-08 12:57