Let's consider a CLASS and BILL table.
CLASS table:
| Class | Description |
|---|---|
| F | Factory |
| H | Headoffice |
| C001 | Electrical |
| C002 | Mechanical |
| C003 | Civil |
BILL table:
| BILL_NO | DOCCLASS |
|---|---|
| 1 | FC001 |
| 2 | FC002 |
| 3 | FC003 |
Description: Class is a primary key. Let's say we created invoices by tagging different class from the CLASS table.
For example invoice 1 is created by tagging FCOO1 (ie. Factory and Electrical)
Problem: how to write a SQL query to get only COO1 part from FC001 of Invoice 1?
This SQL code is not working:
Select
BILLDET.BILL_NO,
BILLDET.CLASS,
BILLDET.GLCODE,
CLASS.DESCRIPT
From
BILLDET
Full Join
CLASS On BILLDET.CLASS = CLASS.CLASS
Output:
| Bill NO | DESCRIPT |
|---|---|
| 1 | FactoryElectrical |
Thank you
CodePudding user response:
Ugh, what a way to store data
WITH classx AS(
SELECT
c.class n.class as class,
c.descript n.descript as descript
FROM
class c
JOIN class n
ON
c.class LIKE 'c%' AND
n.class NOT LIKE 'c%'
)
SELECT * FROM bill JOIN classx ON bill.docclass = classx.class
CodePudding user response:
select bill_no, Description
from
(
select c2.class c1.class as keys, c2.description c1.description as Description
from class c1, class c2
where c1.class LIKE 'c%' AND
c2.class NOT LIKE 'c%'
)as tab, bill
where keys = DOCCLASS;
