2016-06-21 21 views
0

我有2個表,其結構如下:無法搞清楚庫存當前庫存計算

tblBookMst 

Id  bk_isbn  bk_title  bk_author 
---------------------------------------------------- 
1  ISBN_001  ABC Book  AA 
2  ISBN_002  DEF Book  BB 
3  ISBN_003  GHI Book  CC 
4  ISBN_004  JKL Book  DD 

tblBookId 
b_id   id    lib_id  inv_stat 
---------------------------------------------------- 
1   1    BK/LIB/01  1 
2   1    BK/LIB/02  2 
3   1    BK/LIB/03  2 
4   2    BK/LIB/04  1 
5   2    BK/LIB/05  1 
6   3    BK/LIB/06  1 

( 'inv_stat' 圖例:1 =>庫存& 2 = >在流通) 使用上述2個表,我想要寫的查詢,這將給我輸出如下所示

bk_title  bk_author  tot_copies  in_stock  in_circulation 
ABC Book  AA   3    1   2 
DEF Book  BB   2    2   0 
GHI Book  CC   1    1   0 

直到現在我一直無法弄清楚如何計算'in_stock'&'in_circulation'.I使用下面提到的SQL查詢。

SELECT a.id,a.bk_title,a.bk_author,count(b.lib_id) as tot_copies 
FROM tblBookMst a 
JOIN tblBookId b ON a.id = b.id 
GROUP BY a.id,a.bk_title,a.bk_author 
ORDER BY a.bk_title 

我希望你明白我的question.Please諮詢與例如

回答

2

你靠近!你只需要一些Case Statements

SELECT a.id, 
    a.bk_title, 
    a.bk_author, 
    count(b.lib_id) as tot_copies 
    SUM(CASE WHEN b.inv_stat = 1 THEN 1 ELSE 0 END) as in_stock, 
    SUM(CASE WHEN b.inv_stat = 2 THEN 1 ELSE 0 END) as in_circulation 
FROM tblBookMst a 
JOIN tblBookId b ON a.id = b.id 
GROUP BY a.id,a.bk_title,a.bk_author 
ORDER BY a.bk_title 
+0

感謝@JNevill你是偉​​大的! –