2014-04-29 65 views
0

我試圖獲得滿足多個要求的項目的總體積計數。在此表中,每個銷售的產品都有明確的ID。但是,每種產品都可以與多個屬性配對(我們稱之爲這些顏色)。例如:ID爲1234的產品可以具有屬性藍色和橙色,這兩個屬性都列在屬性列下(在產品ID#的許多行到一個鏈接中)。SQL代碼:計數滿足多個要求的項目數

我在做的是計算具有特定屬性組合的產品數量。例如,有多少產品有橙色和藍色,不只是橙色或藍色。爲了使這更復雜,我不能拉總產品編號的數量,我將不得不數。只要說我正在拉動一段時間,那裏有數以億計的產品出售,所有產品都有不同的屬性組合。要進一步複雜化,每種顏色都有多個代碼。藍色,例如,可以編碼爲01或950.

有沒有一種方法可以編寫一條SQL語句,讓我可以計算滿足特定屬性組合的產品數量?如拉動量爲: 橙色和藍色 藍色和綠色 綠色和黃色 等?

我在我的智慧結尾,需要一些指導!

預先感謝您

+0

你能更具體嗎?你有什麼嘗試?你能發佈你的查詢嗎?或者樣品桌?預期成績? – Hituptony

+0

你想在單個查詢中統計多個組合嗎?多少個屬性可以組合在一起? – dnoeth

回答

0
select count(*) from table where Attribute in (01,950) and Attribute in (02, 951) 
0

可以使用group byhaving做到這一點:

select ProductId 
from ProductAttributes pa 
group by ProductId 
having sum(case when Attribute in ('01', '950') then 1 else 0 end) > 0 and 
     sum(case when Attribute in ('02', '951') then 1 else 0 end) > 0; 

如果你想要的屬性的數量,把這個子查詢:

select count(*) 
from (select ProductId 
     from ProductAttributes pa 
     group by ProductId 
     having sum(case when Attribute in ('01', '950') then 1 else 0 end) > 0 and 
      sum(case when Attribute in ('02', '951') then 1 else 0 end) > 0 
    ) t; 

還有其他方法,但having子句對於您可能需要的每種產品中的屬性的所有類型的條件都非常靈活。