3 回答
TA贡献1788条经验 获得超4个赞
我对程序的建议:
CREATE PROC [getAllRecordsForSalaryCalculation] (@year INT, @Bruger NVARCHAR(20)) AS
BEGIN
SET DATEFORMAT YMD
IF (@year = 2018)
BEGIN
WITH tm AS (
SELECT Overtid1 AS Ov1, Overtid2 AS Ov2, Vagt AS Vag, DateForQuery AS Dt
FROM timer
WHERE Bruger LIKE '%' + @Bruger + '%'
AND DateForQuery BETWEEN '2018-12-01' AND '2019-11-30'
)
SELECT
overtid1Before =(SELECT SUM(Ov1) FROM tm WHERE Dt BETWEEN '2018-12-01' AND '2019-04-30')
,overtid1After =(SELECT SUM(Ov1) FROM tm WHERE Dt BETWEEN '2019-05-01' AND '2019-11-30')
,overtid2Before =(SELECT SUM(Ov2) FROM tm WHERE Dt BETWEEN '2018-12-01' AND '2019-04-30')
,overtid2After =(SELECT SUM(Ov2) FROM tm WHERE Dt BETWEEN '2019-05-01' AND '2019-11-30')
,vagtBefore =(SELECT SUM(Vag) FROM tm WHERE Dt BETWEEN '2018-12-01' AND '2019-04-30')
,vagtAfter =(SELECT SUM(Vag) FROM tm WHERE Dt BETWEEN '2019-05-01' AND '2019-11-30')
END
END
TA贡献1875条经验 获得超3个赞
尝试这个:
SELECT
(select sum(Overtid1) from timer where DateForQuery >= Convert(datetime,'2018-12-01') and DateForQuery <= Convert(datetime,'2019-04-30') and Bruger like'%@Bruger%') as overtid1Before,
(select sum(Overtid1) from timer where DateForQuery >= Convert(datetime,'2019-05-01') and DateForQuery <= Convert(datetime,'2019-11-30') and Bruger like'%@Bruger%') as overtid1after,
(select sum(Overtid2) from timer where DateForQuery >= Convert(datetime,'2018-12-01') and DateForQuery <= Convert(datetime,'2019-04-30') and Bruger like'%@Bruger%') as overtid2Before,
(select sum(Overtid2) from timer where DateForQuery >= Convert(datetime,'2019-05-01') and DateForQuery <= Convert(datetime,'2019-11-30') and Bruger like'%@Bruger%') as overtid2after,
(select sum(Vagt) from timer where DateForQuery >= Convert(datetime,'2018-12-01') and DateForQuery <= Convert(datetime,'2019-04-30') and Bruger like'%@Bruger%') as vagtBefore,
(select sum(Vagt) from timer where DateForQuery >= Convert(datetime,'2019-05-01') and DateForQuery <= Convert(datetime,'2019-11-30') and Bruger like'%@Bruger%') as vagtafter
;
TA贡献1775条经验 获得超8个赞
LIKE 子句是错误的。'%@Bruger%' 而不是使用 '%'+ @Bruger+ '%'
尝试这个。
[getAllRecordsForSalaryCalculation]
@year NCHAR(10),
@Bruger NCHAR(20)
AS
BEGIN
IF (@year = 2018)
BEGIN
SELECT SUM(Overtid1) AS overtid1Before
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2018-12-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-04-30')
AND Bruger LIKE '%'+ @Bruger +'%'
SELECT SUM(Overtid1) AS overtid1after
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2019-05-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-11-30')
AND Bruger LIKE '%'+ @Bruger +'%'
SELECT SUM(Overtid2) AS overtid2Before
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2018-12-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-04-30')
AND Bruger LIKE '%'+ @Bruger +'%'
SELECT SUM(Overtid2) AS overtid2after
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2019-05-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-11-30')
AND Bruger LIKE '%'+ @Bruger +'%'
SELECT SUM(Vagt) AS vagtBefore
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2018-12-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-04-30')
AND Bruger LIKE '%'+ @Bruger+ '%'
SELECT SUM(Vagt) AS vagtafter
FROM timer
WHERE DateForQuery >= CONVERT(DATETIME, '2019-05-01')
AND DateForQuery <= CONVERT(DATETIME, '2019-11-30')
AND Bruger LIKE '%'+ @Bruger+ '%'
END
END
- 3 回答
- 0 关注
- 172 浏览
添加回答
举报
