2017-06-07 5 views
-1

In meiner Abfrage habe ich eine CASE-Anweisung, in der ich die Spalte als Zeichenfolgenwert darstellen soll, wenn die Bedingung übereinstimmt. Außerdem möchte ich die Gesamtanzahl duplizierter Werte für das Ergebnis dieser CASE-Anweisung kennen. Zum Beispiel:Zählen doppelter Werte für eine CASE-Anweisung

select NULL as column_1, 
    CASE WHEN name IS NOT NULL THEN CAST(name as string) 
    ELSE '0' END as column_2, 
    (select COUNT (cast(column_2 as string)) from input_table 
    group by (cast(column_2 as string)) HAVING count(cast(column_2 as string)) > 1) as column_3 
    from input_table 

Kann ich für CASE-Anweisung gehen und den Zustand Ausgang zur gleichen Zeit zu zählen? Irgendwelche Vorschläge bitte?

Antwort

0

Ich würde ein CTE hier verwenden. Nicht 100% klar auf was Sie suchen, aber versuchen Sie dies.

;WITH Input_table as (

SELECT NULL AS column_1, 
     CASE 
      WHEN name IS NOT NULL 
      THEN CAST(name AS STRING) 
      ELSE '0' 
     END AS column_2 
) 

select distinct Column_1, Column_2, count(Column_2) [Cnt] from Input_table 
group by Column_1, Column_2 
having count(Column_2) > 1