2016-06-26 6 views
0

Ich versuche, diesen Code zum Funktionieren zu bringen.VB + SQL SUMME mit Bedingung

SELECT InputDate  
     ,Number  
     ,Name  
     ,Sector  
     ,YukyuDate  
     ,YukyuIn  
     ,YukyuOut  
     ,ISNULL(SUM(YukyuIn), 0)-ISNULL(SUM(YukyuOut), 0)As YukyuLeft 
     ,Reason 
    FROM TYukyu 
    WHERE Number = '0011683963' 
GROUP BY Number 
ORDER BY InputDate 

Ich habe bereits versucht

SUM(YukyuIn-YukyuOut) As YukyuLeft 
SUM(YukyuIn)-SUM(YukyuOut) As YukyuLeft 

My SQL haben diese colums

InputDate |Number|Name |Sector |YukyuDate |YukyuIn|YukyuOut|Reason 
------------------------------------------------------------------------- 
2016-06-26 11:50| 1 |User1|Sector1|2016-06-26| 10 |  |Test1 
2016-06-26 11:51| 1 |User1|Sector1|2016-06-26|  | 1 |Test2 
2016-06-26 11:52| 1 |User1|Sector1|2016-06-26|  | 1 |Test3 
2016-06-26 11:53| 2 |User2|Sector1|2016-06-26| 10 | 0 |Test4 
2016-06-26 11:54| 1 |User1|Sector1|2016-06-26|  | 1 |Test5 
2016-06-26 11:55| 3 |User3|Sector1|2016-06-26|  | 1 |Test6 

Ich möchte dies in Datagridview zu zeigen, führt

InputDate |Number|Name |Sector |YukyuDate |YukyuIn|YukyuOut|YukyuLeft|Reason 
------------------------------------------------------------------------- 
2016-06-26 11:50| 1 |User1|Sector1|2016-06-26| 10 |  | 10  |Test1 
2016-06-26 11:51| 1 |User1|Sector1|2016-06-26|  | 1 | 9  |Test2 
2016-06-26 11:52| 1 |User1|Sector1|2016-06-26|  | 1 | 8  |Test3 
2016-06-26 11:54| 1 |User1|Sector1|2016-06-26|  | 1 | 7  |Test5 
+0

Es würde helfen, wenn Sie den Fehler beschrieben Sie erhalten haben, wenn ein Fehler auftritt. Auch, 'Left' ist ein SQL-Schlüsselwort, versuchen:' SUM (YukyuIn) -SUM (YukyuOut) als [Left] ' – TnTinMn

+0

versucht als SUM (YukyuIn) -SUM (YukyuOut) als YukyuLeft und immer noch die Fehlerspalte 'TYukyu. InputDate 'ist in der Auswahlliste ungültig, da es weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. –

+0

Ihre Auswahlen müssen in der group by-Klausel enthalten sein. Der Grund ist wegen der Gruppe, die für Aggregat ist. Entfernen Sie einfach die Gruppe, da Ihre WHERE-Klausel sie verarbeitet. – Codexer

Antwort

0

versuchen, diese

 SELECT InputDate  
       ,Number  
       ,Name  
       ,Sector  
       ,YukyuDate  
       ,YukyuIn  
       ,YukyuOut  
       ,SUM(isnull(YukyuIn,0)-isnull(YukyuOut,0)) 
over (partition by number order by InputDate) as YukyuLeft 
       ,Reason 
      FROM TYukyu 
      WHERE Number = '0011683963' 
     ORDER BY InputDate 


    ' 
+0

danke sehr viel perfekt gearbeitet. Ich suche viel auf Google, und bekomme keine Lösung, dann habe ich hier versucht und in Minuten diese Antwort bekommen. –