2017-02-20 5 views
1

[OK]を、そのビットが簡単ですので、私は数ヶ月の注文のリストを持って次の部分は簡単にするために分割数欄は、平均順にサイズのSQL Serverを与えるには

SELECT COUNT(*) AS ITEMS, 

:。

COUNT(DISTINCT(PICKSET_NO))AS PICKSETS, 

その私がうまくカント次の部分:これであなたの助けのための

SUM(ITEMS/PICKSETS) AS AVGPICKSETSIZE 
FROM dbo.orders 

おかげでここに1つのブロック内のコードです。同じselectであなたは再使用することはできません

SELECT COUNT(*) AS ITEMS, 
     COUNT(DISTINCT PICKSET_NO) AS PICKSETS, 
     COUNT(*)/(1.0 * COUNT(DISTINCT PICKSET_NO)) 
FROM dbo.CollationOrders; 

列の別名:

SELECT 
COUNT(*) AS ITEMS, 
COUNT(DISTINCT(PICKSET_NO))AS PICKSETS, 
SUM(ITEMS/PICKSETS) 
FROM dbo.CollationOrders 
GO 
+0

DISTINCTは関数ではありません。コードを明確にするために 'COUNT(DISTINCT PICKSET_NO)'と書いてください。 – jarlh

+0

申し訳ありませんjarih私はMySQLの日からピックアップしたもの –

答えて

2

繰り返し表現。

1.0は、整数除算を防止するためです。

+2

分割式の括弧が足りないのですか? – Mureinik

+0

完成したデータを見ると、1.0パーツは必要ありませんが、合計を丸めないのが大好きです。 なぜ私は数時間前にこれについて考えなかったのかわかりません! @JustinGreenwood。 –

+0

。 。 。 OPとして、あなたは自由に任意の答えを受け入れることができます。しかし、私はあなたがなぜこの答えを受け入れないのか不思議です。 –

0

あなたはこのように行うことがあります。

SELECT ITEMS, 
     PICKSETS, 
     ITEMS/(1.0 * PICKSETS) 
FROM (
     SELECT COUNT(*) AS ITEMS, 
       COUNT(DISTINCT PICKSET_NO) AS PICKSETS  
     FROM TableName)t 
+0

おかげでジェイは私が必要としていたものです –

0

私が使用して終了:

SELECT 
    COUNT(*) AS ITEMS, 
    COUNT(DISTINCT om.PicksetNo) AS PICKSETS , 
    FORMAT(COUNT(*)/(1.0 * COUNT(DISTINCT om.PicksetNo)),'N2'), 
    ca.YWK AS YWK 
FROM CHDS_Common.dbo.OMOrder om 
INNER JOIN CHDS_Management.dbo.Calendar ca ON om.EarliestPickDate = ca.DT 
GROUP BY ca.YWK 
関連する問題