我有一个非常定制的SQL查询,我在实现时遇到了问题。我正在使用SQL-Server-2008。
我在这个查询中只有一个表,但我正在寻找非常具体的数据。此查询的要求为:
对于每个不同的PartNumber (列),我需要选择要选择的最新(最大) PO (列)。但是,还有另一个名为"Receipt“的列,如果它包含一个值,则应该一起排除PartNumber。
我对GROUP BY子句和用于选择的案例比较熟悉,但我不确定如何将我所知道的所有内容整合到一个有效的查询中……
任何帮助都是非常感谢的!预先感谢=)。
发布于 2012-01-27 02:38:03
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将排除具有部件号的任何行,该部件号在表中的任何位置填充收据。
发布于 2012-01-27 02:43:41
下面是反联接选项
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发布于 2012-01-27 02:40:26
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 PartNumberhttps://stackoverflow.com/questions/9023314
复制相似问题