2017-07-17 12 views
0

私はExcelテーブルをSQLに変換しようとしていますが、最後の2つのカラムに問題があります。下に、完全に機能する(緑色の)Excelテーブルと、これまでのSQLで使用しているコードのテーブル(黄色)を検索します。SUMIFより大きい値とWorkdayカラム

:ここで私はこれまで持っているコードだ

enter image description here

:私は、私はあなたが私がやろうとしているかを理解することができます使用しています私はExcelの数式を貼り付け、列CとDを複製助けが必要

WITH 
    cte_DistinctScheduling AS (
     SELECT DISTINCT 
      s.JobNo 
     FROM 
      dbo.Scheduling s 
     WHERE 
     s.WorkCntr = 'Framing') 
SELECT 
    o.OrderNo, 
    o.Priority AS [P], 
    SUM(r.TotEstHrs)/ROUND((8*w.CapacityFactor*(w.UtilizationPct/100)),2) AS 
    [Work Days Left], 
    Cast(GetDate()+ROUND(SUM(r.TotEstHrs)/ROUND((8*w.CapacityFactor* 
(w.UtilizationPct/100)),2),3) AS DATE) AS DueDate 
FROM OrderDet o JOIN cte_DistinctScheduling ds ON o.JobNo = ds.JobNo 
    JOIN OrderRouting r ON o.JobNo = r.JobNo 
    JOIN WorkCntr w ON r.WorkCntr = w.ShortName 
WHERE r.WorkCntr = 'Framing' 
    AND o.OrderNo NOT IN ('44444', '77777') 
GROUP BY o.OrderNo, o.Priority, ROUND((8*w.CapacityFactor* 
(w.UtilizationPct/100)),2) 
ORDER BY o.Priority DESC; 

SQLの私の仕事日の残りの列は、その特定の行のための適切な量を取得しますが、私はそれを上回るP値を持つすべてを合計し、今日の日付に加えて、私は読んでいたことから、SQLでWorkday関数が表示されないので、何が創造的な解決策であると思っていますか?おそらくCASEステートメントは私の両方の質問に対する答えでしょうか?事前にお礼します

+0

ここに十分な情報がありません。好ましくはSQL Fiddle(http://sqlfiddle.com/)を使用してサンプルデータを提供する必要があります。 – Alex

答えて

1

Excelはどのように役立つのか理解していますが、私はまだ残りの部分を吸収するのに苦労しています、それは私のものかあなたのものなのかどうかは分かりません。 ..

まず、私はあなたの根拠あたりSUMをテストするために何かを嘲笑しました、アイデアはNULL sが何のために出てくるという事実に頼って、そのJOIN側から自己JOINと合計するすべてのものをやっていること合計しないでください:

DECLARE @TABLE TABLE(P int, [Value] int) 
INSERT INTO @TABLE SELECT 1, 5 
INSERT INTO @TABLE SELECT 2, 6 
INSERT INTO @TABLE SELECT 3, 2 
INSERT INTO @TABLE SELECT 4, 4 
INSERT INTO @TABLE SELECT 5, 9 

SELECT T1.P, [SUM] = SUM(ISNULL(T2.[Value], 0)) 
FROM @TABLE AS T1 
LEFT JOIN @TABLE AS T2 ON T2.P <= T1.P 
GROUP BY T1.P 
ORDER BY P DESC 

第二に、就業日はトピックです定期的にあなたがそうしなかった場合は、先の質問からそれについて少し読んでみてください。先週の質問ではposted an answerであっても、スレッド全体でいくつかの参考文献がありました。

第3に、上記のようにtable definitions and sample dataをSQL自体にロードすることができます。

最後に、UtilizationPct/100の結果を確認してください。整数型のデータ型の場合は、おそらくそれに悪い結果が出ているでしょう。

関連する問題