У меня есть таблица tblsale
.
В этой таблице у меня есть поле под названием BillType
, которое содержит "s" и "r" (s = sale, r = returns)
В таблице собрано 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
То, что вам кажется нужным, - это результаты двух запросов, продаж и возвратов, бок о бок. Это можно сделать с помощью 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.
Я не уверен, что вы спрашиваете, но может быть:
SELECT BillNo, VAT, BillType, AfterDiscount FROM tblsale WHERE BillType = 's';