2017-07-17 64 views
0

所以我想將一個Excel表格轉換爲SQL,並且我很難想出最後2列。下面,找到我的Excel表格,它是全功能的(綠色的)和一個表格,用於我目前在SQL中使用的代碼(黃色)。我需要幫助複製列C和d,我貼我使用這樣你就可以瞭解我試圖做Excel公式:SUMIF大於和Workday列

enter image description here

下面的代碼,我到目前爲止有:

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根據您的理由,這個想法是做一個自我JOIN和總結一切事情,從JOIN側,依靠事實NULL旨意拿出來什麼,不應加總:

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,並且整個線程有幾個引用。

第三,我們可以使用裝上SQL本身table definitions and sample data,像我前面所做的那樣。

最後,能否請你檢查的結果UtilizationPct/100?如果這是一個類似整數的數據類型,那麼你可能會得到一個糟糕的結果。