为了账号安全,请及时绑定邮箱和手机立即绑定

我没有得到所有数据

我没有得到所有数据

C#
蝴蝶不菲 2022-06-18 17:05:45
我正在尝试使用这样的存储过程从我的数据库中获取一些数据[getAllRecordsForSalaryCalculation]    @year NCHAR(10),    @Bruger NCHAR(20)ASBEGIN    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%'    ENDEND我的代码看起来像这样con.Open();SqlDataAdapter da = new SqlDataAdapter("getAllRecordsForSalaryCalculation", con);da.SelectCommand.CommandType = CommandType.StoredProcedure;da.SelectCommand.Parameters.AddWithValue("@year", year);da.SelectCommand.Parameters.AddWithValue("@Bruger", bruger);da.Fill(ds);con.Close();但我只得到第一个选择并且它是空的。那里有数据,当我将它作为查询运行时它可以工作。我不确定我在哪里做错了。有人可以帮忙吗?
查看完整描述

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


查看完整回答
反对 回复 2022-06-18
?
翻过高山走不出你

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

;


查看完整回答
反对 回复 2022-06-18
?
www说

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


查看完整回答
反对 回复 2022-06-18
  • 3 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号