在选择每个产品的最高状态后,我必须从产品中选择最低状态。我的问题是
select A. Name
B.LineState
from table A
join table B on A.id=B.refid
where B.Linestate = (select max(B2.Linestate)
from table B2
where B.refid=B2.refid)
这很好,并提供适当的行。现在我必须从之前得到的最小Linestate。我试过了:
...
where B.Linestate = min((select max(B2.linestate)
from table B2
where B.refid=B2.refid))
不幸的是它不起作用。如何从先前选择的最大值组中获得最小值?
答案 0 :(得分:4)
Common Table Expressions是解决此问题的好方法。它们允许您获得所需的设置,然后立即从那里拉出一个子集。
; WITH GetMaxList AS (
select A. Name
B.LineState
from table A
join table B on A.id=B.refid
where B.Linestate=(select max(B2.Linestate) from table B2 where B.refid=B2.refid)
)
SELECT MIN([Column])
FROM GetMaxList
请记住,这只是示例代码。如果您复制粘贴它将无法工作。你需要做一些阅读来弄清楚如何调整你的查询以使它做你想要的,但这应该让你走上正确的轨道。 ; - )
答案 1 :(得分:0)
您可以将第一个查询作为子查询:
SELECT MIN(LineState)
FROM
(
select A. Name
B.LineState
from table A
join table B on A.id=B.refid
where B.Linestate=(select max(B2.Linestate) from table B2 where B.refid=B2.refid)
)
或者如果你也想要这个名字:
SELECT TOP 1 *
FROM
(
select A. Name
B.LineState
from table A
join table B on A.id=B.refid
where B.Linestate=(select max(B2.Linestate) from table B2 where B.refid=B2.refid)
)
ORDER BY Linestate