Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL查询中的If语句?_C#_Sql_If Statement - Fatal编程技术网

C# SQL查询中的If语句?

C# SQL查询中的If语句?,c#,sql,if-statement,C#,Sql,If Statement,我有一个查询,它会给我多个结果,比如: |DATE|------|DESCRIPTION|---|PDV|----------|ID|-------|NAME|--------|Value|-|Quantity| 2016-01-25 DESAYUNOS REST 1 DEL PATRON COMBO 162.00 1 2016-01-25 COMIDAS REST 1 DEL PATRON COMB

我有一个查询,它会给我多个结果,比如:

|DATE|------|DESCRIPTION|---|PDV|----------|ID|-------|NAME|--------|Value|-|Quantity|
2016-01-25    DESAYUNOS     REST            1   DEL PATRON COMBO    162.00    1
2016-01-25    COMIDAS       REST            1   DEL PATRON COMBO    162.00    1
2016-01-25    CENAS         REST            1   DEL PATRON COMBO    162.00    1
2016-01-25    DESAYUNOS     REST            1   DEL PATRON COMBO    162.00    1
我的问题是:

SELECT
    [dbo].[CHEQUES].Fecha,  
    [dbo].[TURNOS].Descripcion, 
    [dbo].[CAPMO].Clave_PDV, 
    [dbo].[CAPMO].Pla AS Platillo_Id, 
    [dbo].[CAPMO].Descripcion, 
    [dbo].[CAPMO].Pre AS PrecioPlatillo, 
    [dbo].[CAPMO].Can AS CantidadPlatillo
FROM         
    [dbo].[CAPMO] 
INNER JOIN 
    [dbo].[CHEQUES] ON [dbo].[CAPMO].Clave_PDV = [dbo].[CHEQUES].Cla_PDV 
                    AND [dbo].[CAPMO].Che = [dbo].[CHEQUES].Che 
INNER JOIN 
    [dbo].[PLATILLOS] ON [dbo].[CAPMO].Pla = [dbo].PLATILLOS].Pla 
INNER JOIN 
    [dbo].[TURNOS] ON [dbo].[CAPMO].Clave_PDV = [dbo].[TURNOS].Clave_PDV
WHERE     
    ([dbo].[CHEQUES].St = 'P') AND ([dbo].[CAPMO].Stpl = 'A') 
第1行和第4行完全相同,是否有一个查询可以检测相同的行,并为每个相等的行将| Quantity |列增加1? 我不知道这在SQL中是否可行

我正在寻找这样的输出:

|DATE|------|DESCRIPTION|---|PDV|----------|ID|-------|NAME|--------|Value|-|Quantity|

2016-01-25    COMIDAS       REST            1   DEL PATRON COMBO    162.00    1
2016-01-25    CENAS         REST            1   DEL PATRON COMBO    162.00    1
2016-01-25    DESAYUNOS     REST            1   DEL PATRON COMBO    162.00    2
在SQL Server中,您可以在以下内容中使用
行号

查询

select [date], [description], pdv, id, name, value, 
       case when rn > 1 then quantity+rn-1 else quantity end as quantity
from( 
    select *, 
           row_number() over(partition by [date], [description], pdv, id, name, value, quantity order by [date]) rn 
    from #t
)x
select [date], [description], pdv, id, name, value, 
       max(case when rn > 1 then quantity +rn-1 else quantity end) as quantity
from( 
    select *, 
           row_number() over(partition by [date], [description], pdv, id, name, value, quantity order by [date]) rn 
    from #t
)x
group by [date], [description], pdv, id, name, value
样本数据

create table #t
(
    [date] date,
    [description] nvarchar(60),
    pdv nvarchar(60),
    id int,
    name nvarchar(60),
    value nvarchar(60),
    quantity int
)
insert into #t values
 ('2016-01-25','DESAYUNOS','REST',1,'DEL PATRON COMBO','162.00',1)
,('2016-01-25','COMIDAS'  ,'REST',1,'DEL PATRON COMBO','162.00',1)
,('2016-01-25','CENAS'    ,'REST',1,'DEL PATRON COMBO','162.00',1)
,('2016-01-25','DESAYUNOS','REST',1,'DEL PATRON COMBO','162.00',1)
,('2016-01-25','DESAYUNOS','REST',1,'DEL PATRON COMBO','162.00',1)
,('2016-01-25','DESAYUNOS','REST',1,'DEL PATRON COMBO','162.00',1)
输出

date        description pdv     id  name                value   quantity
2016-01-25  CENAS       REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  COMIDAS     REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  2
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  3
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  4
date        description pdv     id  name                value   quantity
2016-01-25  CENAS       REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  COMIDAS     REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  4
查看此部分
quantity+rn-1
它将使每个重复行增加1,即使重复的行多于2个

如果只想增加1,而不取决于重复的数量,请使用
quantity-1
而不是
quantity+rn-1

更新

如果您希望得到的结果不重复,且数量最多,则可以使用下面的
MAX
groupby
子句:

查询

select [date], [description], pdv, id, name, value, 
       case when rn > 1 then quantity+rn-1 else quantity end as quantity
from( 
    select *, 
           row_number() over(partition by [date], [description], pdv, id, name, value, quantity order by [date]) rn 
    from #t
)x
select [date], [description], pdv, id, name, value, 
       max(case when rn > 1 then quantity +rn-1 else quantity end) as quantity
from( 
    select *, 
           row_number() over(partition by [date], [description], pdv, id, name, value, quantity order by [date]) rn 
    from #t
)x
group by [date], [description], pdv, id, name, value
输出

date        description pdv     id  name                value   quantity
2016-01-25  CENAS       REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  COMIDAS     REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  2
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  3
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  4
date        description pdv     id  name                value   quantity
2016-01-25  CENAS       REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  COMIDAS     REST    1   DEL PATRON COMBO    162.00  1
2016-01-25  DESAYUNOS   REST    1   DEL PATRON COMBO    162.00  4

对于我来说,我将使用GROUP BY,请看下面的示例

 SELECT  |DATE|
        ,|DESCRIPTION|
        ,|PDV|
        ,|ID|
        ,|NAME|
        ,|Value|
        ,SUM(|Quantity|)
FROM @YourTable
GROUP BY  |DATE|
         ,|DESCRIPTION|
         ,|PDV|
         ,|ID|
         ,|NAME|
         ,|Value|

提供DBMS(MySQL、SQL Server、Oracle等)的数量始终等于1?否查询从datatabse获取值数量,但我想将相同的行数增加1,我只是编辑了我的完整查询atm,有办法做到这一点吗@StanislovasKalašnikovasNot从这个意义上说,但是有很多技巧可以为您解决它-按/计数和/或求和()哇,它确实增加了数量,但是行仍然插入有没有办法让行具有更大的数量?喜欢增量数量,不要像中那样添加行distinc@ArturoMartinez用所需的输出更新您的问题(您希望得到什么结果)。