2017-09-26 101 views
3

我的表是:SQL服務器不同的查詢

tblProduct

male| female| Brand_ID 

tblBrands

Brand_ID| Brand_Name 

我的查詢是這裏:

Select distinct 
    a.Male, a.Female, b.Brand_Name 
from 
    tblProduct as a 
inner join 
    tblBrands as b on b.Brand_ID = a.Brand_ID 

該查詢返回的輸出:

Male Female Brand_Name 
---------------------------------- 
1  0  ABC 
0  1  ABC 
1  0  ABC 
1  0  PQR 
1  0  PQR 
0  1  PQR 
0  1  XYZ 
0  1  XYZ 

但我想下面顯示這個輸出 - 我應該得到這個做什麼?

Male Female Brand_Name 
---------------------------------- 
1  1  ABC 
1  1  PQR 
0  1  XYZ 

有檢查是如果品牌XYZ爲男性或女性,如果是男性位爲真,並且如果根據該節目XYZ女性或男性本雌性位爲真是顯示XYZ 11或1 0或XYZ 0 1

+0

請粘貼在表格輸入 – iamsankalp89

+0

添加我的表參數問題 – Tushar

+6

什麼是預期輸出一行'BRAND_NAME =「xyz''背後的邏輯是什麼? 「男= 1」沒有記錄。 – HoneyBadger

回答

2

一個簡單的GROUP BY子句將解決您的問題

Select 
    Max(cast(a.Male as int)) as Male , 
    Max(cast(a.Female as int)) as Female, 
    b.Brand_Name 
from tblProduct as a inner join 
tblBrands as b on b.Brand_ID = a.Brand_ID 
group by b.Brand_Name 
+0

1和0不是位數 – Tushar

+0

1 0 XYZ這個查詢不給最後一個元組 – iamsankalp89

+0

@Tushar請看最新的解決方案。解決你的位問題。請回答關於最後一個記錄的問題 – DhruvJoshi

1

既然你提到MaleFemalebit類型,那麼,這是如何編寫查詢需要MAXCAST功能:

select (case when ((select count(*) from tblProduct a where a.Male=1 and a.Brand_ID=b.Brand_ID) > 0) then 1 else 0 end) Male, 
     (case when ((select count(*) from tblProduct a where a.Female=1 and a.Brand_ID=b.Brand_ID) > 0) then 1 else 0 end) Female 
     ,b.Brand_Name 
from tblProduct as a inner join 
tblBrand as b on b.Brand_ID = a.Brand_ID 
group by b.Brand_Name,b.Brand_ID 
+0

它也很有用謝謝@Karamafrooz – Tushar

+0

@Tushar你非常歡迎:) – Karamafrooz