2016-09-01 5 views
0

Es gibt zwei Felder in meiner Tabelle cust_shipmentdate_awb und comp_shipdate_awb. Ich versuche eine CASE-Anweisung zu schreiben, die beide Felder cust_shipmentdate_awb und comp_shipdate_awb auf null oder leer prüfen soll. Wenn beide Null sind, dann zeige das Ergebnis als 'Ausstehend' an. Wenn eines der Felder nicht leer ist, sollte es als 'Completed' angezeigt werden UND wenn beide Felder eingegeben werden, sollte es auch 'Completed' sein. Ich habe die folgende CASE-Anweisung ausprobiert. Aber es zeigt an, wenn beide Felder Daten eingegeben werden.CASE-Anweisung mit Bedingungen

CASE  
When cust_shipmentdate_awb Is Null Or cust_shipmentdate_awb = '' Then 'Pending' 
Else 'Completed' End AS shipment_status 

Antwort

0

Dies sollte

arbeiten
CASE 
When commercial_logi_freight.cust_shipmentdate_awb Is Null Or commercial_logi_freight.cust_shipmentdate_awb = '' Then commercial_logi_freight.comp_shipdate_awb 
Else commercial_logi_freight.cust_shipmentdate_awb End AS shipment_date, 
CASE 
When commercial_logi_freight.cust_shipmentdate_awb Is Null Or commercial_logi_freight.cust_shipmentdate_awb = '' Then 'Pending' 
Else 'Completed' End AS shipment_status 
+0

Seine adaequat. Vielen Dank für Ihre Zeit –

1

Verwenden Sie eine Unterabfrage.

SELECT CASE WHEN shipment_date Is Null Or shipment_date = '' 
      THEN 'Pending' 
      Else 'Completed' 
     End AS shipment_status 
FROM (
    SELECT CASE 
      When commercial_logi_freight.cust_shipmentdate_awb Is Null Or 
commercial_logi_freight.cust_shipmentdate_awb = '' 
      Then commercial_logi_freight.comp_shipdate_awb 
      Else commercial_logi_freight.cust_shipmentdate_awb 
     End AS shipment_date 
    FROM ...) AS x 
1

Sie benötigen eine Abfrage innerhalb einer Unterabfrage setzen dann wie unten außerhalb dieser Unterabfrage zu diesem shipment_date Feld verweisen:

SELECT 
subQuery.*, 
Case When shipment_date Is Null Or shipment_date = '' Then 'Pending' Else 'Completed' End AS shipment_stat 
FROM 
(
    #YOUR QUERY GOES HERE..... 
    SELECT 
    CASE 
    When commercial_logi_freight.cust_shipmentdate_awb Is Null Or 
    commercial_logi_freight.cust_shipmentdate_awb = '' Then 
    commercial_logi_freight.comp_shipdate_awb 
      Else commercial_logi_freight.cust_shipmentdate_awb End AS shipment_date 
    FROM your_table 

) AS subQuery 

Sie können nur Spaltenaliasnamen in GROUP BY, ORDER BY verwenden oder HABEN Klauseln.

Problem with alias