2016-09-16 15 views
-3

計算方法毎週の従業員の総勤務時間。あなたのテーブルの構造を知らないTsqlで週勤務時間の従業員を計算する方法

employee week1 week2 week3 week4 
rams   50  48  49  54 
+1

これは必要な出力ですか?もしそうなら、あなたのDBスキーマは生データを含んでいますか? – AdaTheDev

+0

ええ。従業員の勤務時間に基づいています。 @AdaTheDev –

+0

ソースデータとそのテーブル構造を指定してください。 – iamdave

答えて

0

は、それが困難になるが、それは以下の本に似ている場合:あなたは動的SQLを使用したピボットを使用することができます。

DECLARE @dynamicSql AS nvarchar(max) 
DECLARE @dynamicCols AS nvarchar(max); 


IF OBJECT_ID('tempdb..#tempHours') IS NOT NULL 
DROP TABLE #tempHours 

CREATE TABLE #tempHours (
    empId int, 
    workDate datetime, 
    hoursWorked money 
) 

INSERT INTO #temphours 
    VALUES (1, '1/2/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (2, '2/3/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (3, '3/4/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (4, '4/5/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (5, '5/6/2016', 8.5) 

INSERT INTO #temphours 
    VALUES (1, '1/3/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (1, '1/4/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (2, '2/4/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (3, '3/5/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (4, '4/6/2016', 8.5) 
INSERT INTO #temphours 
    VALUES (5, '5/7/2016', 8.5) 



-- Construct the column list for the IN clause 
SET @dynamicCols = STUFF((SELECT 
    N',' + QUOTENAME(w) AS [text()] 
FROM (SELECT DISTINCT 
    DATEPART(wk, workDate) AS W 
FROM #temphours) AS W 
ORDER BY W 
FOR xml PATH ('')) 
, 
1, 1, N''); 


-- Construct the full T-SQL statement 
-- and execute dynamically 

SET @dynamicSql = N'SELECT * 
      FROM (SELECT empId, datepart(wk,workDate) as WeekNo, hoursWorked 
        FROM dbo.#temphours) AS I 
      PIVOT(SUM(hoursWorked) FOR WeekNo IN(' + @dynamicCols + N')) AS P;'; 

EXEC sp_executesql @dynamicSql; 

GO 
0

、これはそこにあなたを取得しますSUM()をお試しください。

SELECT Color, SUM(ListPrice), SUM(StandardCost) 
    FROM Production.Product 
    WHERE Color IS NOT NULL 
     AND ListPrice != 0.00 
     AND Name LIKE 'Mountain%' 
    GROUP BY Color 
    ORDER BY Color; 
GO 

私は質問の少し詳細があなたに良い答えを得ると信じています。

関連する問題