2016-07-29 9 views
0

Bitte helfen Sie, nur Verkaufsartikel (IF-Spalte btLatinAbbrev = Sales) und Inventarartikel (WENN die QTY-Spalte 1 ist) zu zeigen.MS SQL-Ausgabe Verkaufstransaktion und Inventar

Und ich möchte eine weitere Spalte namens Datatype basierend auf der oben genannten Bedingung. WENN die Spalte btLatinAbbrev = Sales, dann sollte Spalte Datatype mit S (S main sale) gefüllt werden und WENN die Spalte QTY 1 enthält, dann sollte die Spalte Datatype mit I (i für Inventar) gefüllt werden.

unten ist die exportierte Tabelle Ansicht von MS SQL 2008

+---------------+-----------------+-----+----------+ 
| btLatinAbbrev |  SN  | Qty | DATATYPE | 
+---------------+-----------------+-----+----------+ 
| Sales   | 355274073159784 | 0 |   | 
| Sales   | 355274073190128 | 0 |   | 
| Sales   | 355274073158679 | 0 |   | 
| Sales   | 355274073166904 | 0 |   | 
| Sales   | 355274073159925 | 0 |   | 
| Sales   | 355274073159255 | 0 |   | 
| Sales   | 355274073158679 | 0 |   | 
| Sales   | 355274073166904 | 0 |   | 
| Sales   | 355274073190128 | 0 |   | 
| Sales   | 355274073159255 | 0 |   | 
| Sales   | 355274073159925 | 0 |   | 
| Pur.   | 355274073158679 | 0 |   | 
| Pur.   | 355274073159230 | 1 |   | 
| Pur.   | 355274073157333 | 1 |   | 
| Pur.   | 355274073158851 | 1 |   | 
| Pur.   | 355274073166904 | 0 |   | 
| Pur.   | 355274073190128 | 0 |   | 
| Pur.   | 355274073159784 | 0 |   | 
| Pur.   | 355274073159255 | 0 |   | 
| Pur.   | 355274073158828 | 1 |   | 
| Pur.   | 355274073159925 | 0 |   | 
| Sales   | 355274073159784 | 0 |   | 
| Sales   | 355274073158679 | 0 |   | 
| Sales   | 355274073166904 | 0 |   | 
| Sales   | 355274073190128 | 0 |   | 
| Sales   | 355274073159255 | 0 |   | 
| Sales   | 355274073159925 | 0 |   | 
| Pur.   | 355274073158679 | 0 |   | 
| Pur.   | 355274073159230 | 1 |   | 
| Pur.   | 355274073157333 | 1 |   | 
| Pur.   | 355274073158851 | 1 |   | 
| Pur.   | 355274073166904 | 0 |   | 
| Pur.   | 355274073190128 | 0 |   | 
| Pur.   | 355274073159784 | 0 |   | 
| Pur.   | 355274073159255 | 0 |   | 
| Pur.   | 355274073158828 | 1 |   | 
| Pur.   | 355274073159925 | 0 |   | 
| Sales   | 355274073159784 | 0 |   | 
+---------------+-----------------+-----+----------+ 

Antwort

0

Versuchen

SELECT btLatinAbbrev, 
     Qty, 
     CASE WHEN btLatinAbbrev = 'Sales' THEN 'S' 
      ELSE 'I' 
     END AS DataType 
FROM myTable 
WHERE btLatinAbbrev = 'Sales' OR Qty = 1; 

Sie nicht angeben, was zu tun, falls eine Aufzeichnung sowohl eine Verkaufsposition ist und eine Bestandsaufnahme Artikel.
Die obige Abfrage definiert es ein Verkaufsartikel.

+0

Ich habe noch eine Spalte namens Salesdate. Wie kann ich die Verkäufe von gestern mit Inventar anzeigen? Wenn es gestern einen Verkauf gibt, sollte es Verkäufe mit Inventar zeigen. Wenn es keine Verkäufe gibt, brauchen Sie den Verkauf nicht zu verkaufen, sondern brauchen Inventar mit dem gestrigen Verkauf ... –

0

Lösung Typ1

with CTE as 
(
select 'sales' 'btLatinAbbrev ','355274073159784' 'SN','0' 'Qty' 
union all 
select 'sales','355274073159785','1' 
union all 
select 'pur','355274073159786','2' 
union all 
select 'Pur','355274073159787','0' 
) 

select btLatinAbbrev, 
case when btLatinAbbrev IN ('sales') and QTY >0 then 'S' 
    when btLatinAbbrev IN ('Pur') and QTY >0 then 'I' end 'Datatype' 
from cte 

2 Lösung Typ2

with CTE as 

    (
    select 'sales' 'btLatinAbbrev ','355274073159784' 'SN','0' 'Qty' 
    union all 
    select 'sales','355274073159785','1' 
    union all 
    select 'pur','355274073159786','2' 
    union all 
    select 'Pur','355274073159787','0' 
    ) 

    select btLatinAbbrev, sn, 
    case when btLatinAbbrev IN ('sales') then 'S' --else 'S' 
     when btLatinAbbrev IN ('Pur') then 'I' end 'DAtatype' 
    from cte where qty > 0