有人可以请给我正确的查询。SQL查询没有获取正确的结果
我有一个表Item
与两列ItemNo
和AliasItemNo
。
我想编写一个查询只返回我那些有不止一个别名项目
我试图执行
select ItemNo, AliasItemNo
from Item
group by ItemNo, AliasItemNo
having count(ItemNo) > 1
order by ItemNo Asc
这查询不给正确的结果。
请帮助
有人可以请给我正确的查询。SQL查询没有获取正确的结果
我有一个表Item
与两列ItemNo
和AliasItemNo
。
我想编写一个查询只返回我那些有不止一个别名项目
我试图执行
select ItemNo, AliasItemNo
from Item
group by ItemNo, AliasItemNo
having count(ItemNo) > 1
order by ItemNo Asc
这查询不给正确的结果。
请帮助
与计数的子查询的是,在所有RDBMS的工作方式:
SELECT ItemNo, AliasItemNo FROM Item i1
WHERE (SELECT COUNT(*) FROM Item i2 WHERE i1.ItemNo=i2.ItemNo) > 1
ORDER BY ItemNo Asc
在SQL-服务器> = 2005,你也可以在一个CTE使用COUNT(*) OVER (PARTITION BY ItemNo)
:
WITH CTE AS(
SELECT ItemNo,AliasItemNo,
Num=COUNT(*) OVER (PARTITION BY ItemNo)
FROM Item)
SELECT ItemNo, AliasItemNo FROM CTE
WHERE Num > 1
ORDER BY ItemNo Asc;
有很多w的ays要做到这一点。这有几种方法。
--using a sub query
SELECT
ItemNo,
AliasItemNo
FROM
Item INNER JOIN
(
SELECT
ItemNo
GROUP BY
ItemNo
HAVING
COUNT(AliasItemNo) > 1)
AS dupes
ON
Item.ItemNo = dupes.ItemNo
ORDER BY
Item.ItemNo ASC
--using CTE
;WITH
dupes AS
(
SELECT
ItemNo
GROUP BY
ItemNo
HAVING
COUNT(AliasItemNo) > 1
)
SELECT
ItemNo,
AliasItemNo
FROM
Item INNER JOIN dupes
ON
Item.ItemNo = dupes.ItemNo
ORDER BY
Item.ItemNo ASC
这应该工作:
select ItemNo
from Item
group by ItemNo
having count(AliasItemNo) > 1
order by ItemNo Asc
你指望货号,而不是AliasItemNo
有COUNT(*) – Paparazzi