2010-09-29 2 views
6

У меня есть эти данные:Проблема в получении Сумма

name qty  date     flag 
---------------------------------------------  
abc  255  11/10/1986 12:00:00 AM IN 
abc  300  11/10/2010 12:00:00 AM IN 
abc  12  11/10/2012 12:00:00 AM OUT 
abc  13  11/9/2010 12:00:00 AM OUT 
NULL NULL NULL     NULL 

Я хочу, чтобы получить сумму qty в этой конкретной строки:

  • Если flag является «в», то он будет добавить на сумму
  • если flag «вне», то это будет вычесть из суммы

ответ

13
SELECT SUM(case flag when 'IN' then qty else -qty end) 
from table 
WHERE ..... Your conditions here ... 
-1

я могу думать о трех способов сделать это. Первый - это цикл с выражением if, я, вероятно, не буду использовать этот параметр.

Второй использовать Linq сделать расчет, проверить этот сайт, если вы не знаете, Linq http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

Вы могли бы использовать LAMDA выражения, однако я не большой с ними, и я не на 100% уверен, как это сделать, но я чувствую, что Lamda Expressions, скорее всего, даст вам самое элегантное решение.

+0

Это ответ на другой вопрос? Если нет, то -1 для предложения вернуть все данные обратно в приложение и использовать Linq для его агрегации, когда существует вполне удовлетворительное решение SQL. –

+0

Спасибо, ребята Решение работало Большое спасибо – Rohan

+0

Мартин, я предположил, что предложение where будет использоваться в Linq, используемом в инструкции Linq, которое только вернет необходимые записи, поскольку Linq создает довольно хорошие SQL-запросы. Сказав, что я просматривал тег C# и пропустил, что этот вопрос был на самом деле вопросом sql – TheLukeMcCarthy

Смежные вопросы