2010-11-29 6 views
0

У меня есть таблица tblsale.
В этой таблице у меня есть поле, называемое BillType, который содержит "S" и "г" (с = продажа, R = возвращает)mysql table inside join

таблица имеет rougly 25 записей. Из них 7 записей - «r», а остальные записи - «s».

Как написать запрос так, что мой результат включает в себя следующие столбцы:

Что хотят именно ниже

Amount BillType Amount BillType Date 
100  s  50  r 29-11-2010 
120  s  20  r 28-11-2010 
130  s  30  r 27-11-2010 
140  s  50  r 26-11-2010 
+0

Ваш вопрос непонятен. Что вы хотите от данных. Только «Продажа» записывает «Возвраты», общий «НДС» или «Последующий», связанный с продажей или возвратом, или оба? – DRapp 2010-11-29 16:47:44

ответ

1

Что вам нужно, это результаты двух запросов, продаж и возвратов, бок о бок. Это можно сделать с помощью kludge следующим образом:

 select amount, sale, returnamount, returned, returndate 
     from 
     (
     select amount, 1 as sale, 0 as returnamount, 0 as returned, '' as returndate 
     from sales where billtype='s' 
     union 
     select 0 as amount, 0 as sale, amount as returnamount, 1 as returned, date as returndate 
     from sales where billtype ='r' 
     ) 

Возможно, вам потребуется указать дату в строковое представление. Объединенным наборам нужна одна и та же структура столбцов, поэтому вы создаете фиктивные столбцы. (Вы не запрашивали дату продажи для продажи.)

Или вы можете сделать это с помощью инструкции CASE WHEN.

0

Я не уверен, что вы просите, но, может быть:

SELECT BillNo, VAT, BillType, AfterDiscount FROM tblsale WHERE BillType = 's';