列出应用中的产品照片列表。
然而,已经发现有些人没有1套的位置。
有没有办法检索没有位置设置为1的所有产品的productID?
快速测试下面的临时表。您可以看到prodID 95的位置不是1.
DECLARE @prodphoto TABLE
(
ProdID INT,
StatusID INT,
Position INT
)
INSERT INTO @prodphoto VALUES (95,1,2)
INSERT INTO @prodphoto VALUES (95,1,3)
INSERT INTO @prodphoto VALUES (95,1,4)
INSERT INTO @prodphoto VALUES (95,1,5)
INSERT INTO @prodphoto VALUES (95,1,6)
INSERT INTO @prodphoto VALUES (112,1,1)
INSERT INTO @prodphoto VALUES (112,1,2)
INSERT INTO @prodphoto VALUES (112,1,3)
INSERT INTO @prodphoto VALUES (666,1,2)
INSERT INTO @prodphoto VALUES (666,1,3)
我想要的输出就像是
http://s4.postimg.org/57dh9neql/output.png
我已经离开了,加入了临时职位,但我没有得到我想要的东西。
答案 0 :(得分:2)
不是很聪明,但阅读和理解简单:
SELECT DISTINCT ProdID
FROM @prodphoto pp
WHERE ProdID NOT IN (SELECT ProdID FROM @prodphoto WHERE Position = 1)
或者,使用GROUP BY
:
SELECT pp.ProdID
FROM @prodphoto AS pp
GROUP BY pp.ProdID
HAVING SUM(CASE WHEN Position = 1 THEN 1 ELSE 0 END) = 0
等。许多道路通往罗马。 : - )
答案 1 :(得分:1)
从表中获取所有行,并使用union all
添加缺少的行。
select P.ProdID,
P.StatusID,
P.Position as ProdPosition,
P.Position
from @prodphoto as P
union all
select P1.ProdID,
null,
null,
1
from @prodphoto as P1
where not exists (
select *
from @prodphoto as P2
where P1.ProdID = P2.ProdID and
P2.Position = 1
)
group by P1.ProdID
order by ProdID,
Position