2017-05-18 7 views
1

Im Voraus tut mir leid, wenn meine Frage wiederholt oder ähnlich zu einem anderen ist, habe ich bereits andere ähnliche Beiträge überprüft, aber ich kann es nicht richtig machen. Also, hier ist meine Frage. Ich habe die nächsten zwei Select-Anweisungen, und ich habe Probleme bei der richtigen Platzierung der zweiten Abfrage innerhalb der ersten, ich habe versucht, in die Auswahl, nach den Joins, und es wäre toll, wenn Sie mir helfen könnten oder geben und beraten .SQL Server. Wie man einen ausgewählten Fall in einen anderen legt Mit mehreren Joins auswählen

select distinct movements.date, movements.productcode, products.productname 
,clasification.family, clients.clientname, clients.clientcode, documents.invoicereference 
,movements.quantity, movements.price, movements.credit, movements.total, movements.exchange 
,movements.state, movements.city 
from invoices.movements 

    inner join invoices.products 
    on invoices.movements.idproduct=invoices.products.idproduct 
    left outer join invoices.documents 
    on invoices.movements.iddocument=invoices.documents.iddocument 
    inner join invoices.coins 
    on invoices.documents.idcoin=invoices.coins.idcoin 
    inner join invoices.address 
    on invoices.address.iddocument=invoices.documents.iddocument 
    inner join invoices.clasifications 
    on invoices.clasifications.family='aspen' 
    inner join invoices.clients 
    on invoices.documents.idclient=invoices.clients.idclient 

Das ist, was ich von der vorherigen Abfrage bekomme.

+----+------------+------------+-----------+-----------+-----------------+--------+----------+------+-----+--------+-----+----+ 
|date|product_code|product_name|client_name|client_code|invoice_reference|quantity|unit_price|credit|total|exchange|state|city| 
+----+------------+------------+-----------+-----------+-----------------+--------+----------+------+-----+--------+-----+----+ 

Aber ich möchte auch eine weitere Spalte hinzufügen, die auf die Art der Kunden bezieht, sie zwei clasifications haben, wenn ihre client_code wie dieser ‚N00000‘ (oder präziser, wenn sie mit einer Null enden) ist, sie sind „Casual“ Kunden, wenn nicht (wie ‚N00013‘, sie „Fixed“ Kunden sind. Hier ist die Abfrage.

select 
    case 
    when invoices.clients.idclient='N00000' then 'Casual' 
    else 'Fixed' 
    end as client_type, 
    clientcode, invoices.clients.clientname 
from invoices.documents. 
inner join invoices.clients 
on invoices.documents.idclient=invoices.clients.idclient 

Mein Problem ist, dass ich nicht zu setzen scheinen, um die Frage richtig innerhalb der ersten, und ich würde wirklich schätzen, wenn mir jemand helfen könnte.

+0

Können Sie Ihren Versuch, fügen Sie die zwei Abfragen zu kombinieren, und welche Fehlermeldung Sie? –

Antwort

1

Aliase sind dein Freund, ebenso wie die Formatierung von Codes.

(oder präziser, wenn sie am Ende mit einer Null), sie sind „Casual“

select distinct 
    im.date 
    , im.productcode 
    , ip.productname 
    , icla.family 
    , icli.clientname 
    , icli.clientcode 
    , id.invoicereference 
    , im.quantity 
    , im.price 
    , im.credit 
    , im.total 
    , im.exchange 
    , im.state 
    , im.city 
    , case when id.idclient like '%0' then 'Casual' 
     when id.idclient is not null then 'Fixed' 
     end as client_type 
from invoices.movements im 
    inner join invoices.products ip 
    on im.idproduct=ip.idproduct 
    left outer join invoices.documents id 
    on im.iddocument=id.iddocument 
    inner join invoices.coins ico 
    on id.idcoin=ico.idcoin 
    inner join invoices.address 
    on invoices.address.iddocument=id.iddocument 
    inner join invoices.clasifications icla 
    on icla.family='aspen' 
    inner join invoices.clients icli 
    on id.idclient=icli.idclient 
+0

Vielen Dank! Dies behob mein Problem. (: –

+0

@JessCervantes Happy to help! – SqlZim

1

Es sieht für mich wie Sie bereits die erforderlichen in Ihrem ersten Join-Abfrage gemacht haben, so dass Sie nur, wie so bräuchten, um Ihren CASE-Ausdruck in der Spaltenliste der ersten Abfrage hinzufügen:

select distinct movements.date, movements.productcode, products.productname 
,clasification.family, clients.clientname, clients.clientcode, documents.invoicereference 
,movements.quantity, movements.price, movements.credit, movements.total, movements.exchange 
,movements.state, movements.city, case 
    when invoices.clients.idclient='N00000' then 'Casual' 
    else 'Fixed' 
    end as client_type 
from invoices.movements 

    inner join invoices.products 
    on invoices.movements.idproduct=invoices.products.idproduct 
    left outer join invoices.documents 
    on invoices.movements.iddocument=invoices.documents.iddocument 
    inner join invoices.coins 
    on invoices.documents.idcoin=invoices.coins.idcoin 
    inner join invoices.address 
    on invoices.address.iddocument=invoices.documents.iddocument 
    inner join invoices.clasifications 
    on invoices.clasifications.family='aspen' 
    inner join invoices.clients 
    on invoices.documents.idclient=invoices.clients.idclient 
+0

Vielen Dank! Dies war sehr hilfreich (: –

Verwandte Themen