1

My query used to be

SELECT 
    PROVIDER, 
    LEFT([START_TIME],13) as [HOUR],
    DEVICE_ID as BIKEID
FROM 
    table1
GROUP BY 
    PROVIDER_NAME, DEVICE_ID, LEFT([START_TIME],13)

and it was working fine.

Due to certain conditions I changed rule at Device_id

CASE
   WHEN NAME = 'xyz' THEN VEHICLE_ID
   ELSE DEVICE_ID 
END AS BIKEID

And my changes look like

SELECT 
    PROVIDER, 
    LEFT([START_TIME], 13) AS [HOUR], 
    CASE
       WHEN NAME = 'xyz' THEN VEHICLE_ID
       ELSE DEVICE_ID  
    END AS BIKEID
    --DEVICE_ID as BIKEID
FROM 
    table1
GROUP BY 
    CASE 
       WHEN NAME = 'xyz'
          THEN (PROVIDER, VEHICLE_ID, LEFT([START_TIME], 13))
          ELSE (PROVIDER, DEVICE_ID, LEFT([START_TIME], 13))
    END

I did something wrong at GROUP BY.

Anyone please suggest how to fix this.

Thanks

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Mr_gemini
  • 43
  • 1
  • 6

1 Answers1

1

Is this what you want?

SELECT PROVIDER, 
       LEFT([START_TIME],13) as [HOUR],
       (CASE WHEN NAME = 'xyz' THEN VEHICLE_ID
             ELSE DEVICE_ID
        END) as BIKEID
FROM table1
GROUP BY PROVIDER_NAME, 
         (CASE WHEN NAME = 'xyz' THEN VEHICLE_ID
             ELSE DEVICE_ID
          END),
         LEFT([START_TIME], 13)
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786