簡體   English   中英

SQL 查詢多行

[英]SQL Query on multiple rows

我有一個包含 3 列的表

ProjectNo | Property | Value
----------+----------+-------
        1 | Manager  | Bob
        1 | Prop1    | foo
        1 | Prop2    | bar
        2 | Manager  | Joe
        2 | Prop1    | Ree
        2 | Prop2    | Mee

我想運行一個返回ProjectNo的 SQL 查詢,其中Manager = "Bob" AND Prop1 = "foo" and Prop2 = "bar"

結果應該是 1

你可以試試:

select ProjectNo from table_name
where (Property = 'Manager' and Value = 'Bob') 
      or (Property = 'Prop1' and Value = 'foo')
      or (Property = 'Prop2' and Value = 'bar')
group by ProjectNo, Property, Value
having count(ProjectNo) = 3
limit 1

一種方法是按projectNo進行分組,並且每組只采用具有所有 3 個條件的那些

select projectNo
from your_table
group by projectNo
having sum(case when property = 'Manager' and value = 'Bob' then 1 end) > 0
   and sum(case when property = 'Prop1' and value = 'foo' then 1 end) > 0
   and sum(case when property = 'Prop2' and value = 'bar' then 1 end) > 0

您可以使用自聯接 pn 表,其中包含每個分隔對屬性、值的條件

select  m1.projectNo 
from my_table m1 
inner join my_table m2 on m1.projectNo = m2.projectNo
  AND m2.Property = 'Prop1'
    AND  m2.Value = 'foo'
inner join my_table m23on m1.projectNo = m3.projectNo
    AND m2.Property = 'Prop2'
      AND  m2.Value = 'bar'
WHERE m1.Property = 'Manager'
  AND  m1.Value = 'Bob'

使用PIVOT

小提琴演示

SELECT ProjectNo FROM
(SELECT ProjectNo, Property, Value FROM mytbl) AS SourceTable
PIVOT (MAX(Value) FOR Property IN ([Manager], [Prop1], [Prop2])) AS PivotTable
WHERE  Manager = 'Bob' AND Prop1 = 'foo' AND Prop2 = 'bar'

執行GROUP BY ,使用HAVING確保所有 3 個屬性都存在:

select ProjectNo
from tablename
where (Property = 'Manager' and Value = 'Bob') 
   or (Property = 'Prop1' and Value = 'foo')
   or (Property = 'Prop2' and Value = 'bar')
group by ProjectNo
having count(distinct Property) = 3

或者,使用INTERSECT

select ProjectNo from tablename where Property = 'Manager' and Value = 'Bob'
INTERSECT
select ProjectNo from tablename where Property = 'Prop1' and Value = 'foo'
INTERSECT
select ProjectNo from tablename where Property = 'Prop2' and Value = 'bar'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM