質問 |
||
| QNo.4004346 | グループ化データの割り算について | |
|---|---|---|
| 質問者:AS400VBNET |
SQLSERVER 言語 VB VS2008 いつも勉強させていただいています。 SQL文で 「0 除算エラーが発生しました。」 が出て、困っています。 アドバイスお願いいたします。 SQL文 COUNT(CASE WHEN CONVERT(CHAR(10), 納期, 111) = GETDATE() _ AND 入荷数 = 0 THEN 0 ELSE NULL END) _ / _ COUNT(CASE WHEN CONVERT(char(10), 納期, 111) = GETDATE() _ THEN 0 ELSE NULL END) * 100 AS '遅延率(%)' ・・・GROUP化 わかりずらいのですが、期間内の入荷数/全体数で割っています。 COUNTでも駄目でした。 個々のデータは取得できます。下記 COUNT(CASE WHEN CONVERT(CHAR(10), 納期, 111) = GETDATE() _ AND 入荷数 = 0 THEN 0 ELSE NULL END) AS 未入荷計 何か良い方法が御座いましたらご指導くださいませ。 よろしくお願いします。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/07 15:34 |
||
回答良回答20pt |
|
| ANo.1 | ワンクッション入れて、全体数がゼロだった場合に遅延率を0かNULLにすれば いいのではないでしょうか。 SELECT CASE WHEN 全体計=0 THEN NULL ELSE 未入荷計/全体計*100 END AS '遅延率(%)' FROM (SELECT COUNT(CASE WHEN CONVERT(CHAR(10), 納期, 111) = GETDATE() AND 入荷数 = 0 THEN 0 ELSE NULL END) AS 未入荷計, COUNT(CASE WHEN CONVERT(char(10), 納期, 111) = GETDATE() THEN 0 ELSE NULL END) AS 全体計 FROM ... |
|---|---|
| 回答者:nora1962 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/07 16:34 |
|
| |
| この回答へのお礼 | ありがとう御座います解決しました。 除算をする場合にデータ/0の場合にエラーになるようです。実データでその条件が出なければOKだと思っていました。 それを回避するようにCASE文を入れました。 参考になりました。 |