2015-10-08 57 views
1

enter image description here查詢,看看對同一個產品編號

產品名稱的計數如何編寫SQL查詢來展示基於一個產品ID名稱的數量。 例如,在這個例子中:對於產品編號 - 263,計數(名稱)= 3

我想看到

263 3 
264 2 
265 10 
266 0 (if null) 
+1

'選擇產品ID,通過productid'從表名組數(名稱),你怎麼知道下一個ID像266 – wiretext

+0

這可能算作一個答案。 – arcyqwerty

回答

1

假設你有一個產品表,那麼你想有一個left join

select p.productid, count(pn.productid) 
from products p left join 
    productnames pn 
    on p.productid = pn.productid 
group by p.productid; 
+0

您好@gordonlinoff,請您花些時間看看這個[回覆](http://stackoverflow.com/a/33006952/460557)它與這個問題沒有關係,但我認爲這對一個專家來說是值得的你自己去看看。問題涉及這兩個鏈接[sqlfiddle 1](http://sqlfiddle.com/#!2/c77d8/7)和[sqlfiddle 2](http://sqlfiddle.com/#!9/c77d8/182)通知'quantity_diff'列中的最後一個值 –

-2

嘗試這種解決方案:

SELECT 
    PRODUCT_ID AS PID, 
    COALESCE(COUNT(NAME), 0) AS CNT 
FROM YOUR_TABLE 
GROUP BY PRODUCT_ID 
+0

SELECT PRODUCT_ID AS PID,ISNULL(COUNT(NAME),0)作爲CNT從YOUR_TABLE GROUP BY PRODUCT_ID – BalajiShriram

2
SELECT productid, COUNT(*) 
FROM products 
GROUP BY productid 

這不是一個確切的答案,但它會返回每個獨特productid的productid出現次數。它可以幫助你找到你的結果。

0

龐。

我已經使用CTE編寫了一個答案,它將爲您提供每個產品的所有名稱的計數,這些名稱可以很容易地更改爲COUNT DISTINCT名稱。

;WITH CTE_DISTINCT_NAMES 
     AS (SELECT  --DISTINCT 
         /* Uncomment "DISTINCT" above 
          to include duplicate names 
          in the COUNT 
          */ 
         ProductId 
      ,   Name   
      FROM  TABLE1 
      ) 
     SELECT  T.ProductId 
     ,   COUNT(ISNULL(T.Name,'')) AS [COUNT(Name)] 
     FROM  CTE_DISTINCT_NAMES AS T 
     GROUP BY T.ProductId