title: How does this CASE expression reach the ELSE clause?
body: <p>I need to load some test data into the Channel field on my Account table.  The Channel can be one of 10 different values, so I thought I'd randomly assign the Channel one of the values using a <code>CASE</code> expression along with <code>ABS(CHECKSUM(NewId())) % 10</code> like so:</p>
  
  <pre><code>SELECT 
      id,
      name,
      Channel = 
        CASE ABS(CHECKSUM(NewId())) % 10
          WHEN 0 THEN 'Baby Only'
          WHEN 1 THEN 'Club'
          WHEN 2 THEN 'Drug'
          WHEN 3 THEN 'Food'
          WHEN 4 THEN 'Internet'
          WHEN 5 THEN 'Liquidators'
          WHEN 6 THEN 'Mass'
          WHEN 7 THEN 'Military'
          WHEN 8 THEN 'Other'
          WHEN 9 THEN 'Speciality'
          ELSE '*NONE*'            -- How is this ever getting reached?
        END
  FROM 
      retailshelf_nil...account A
  </code></pre>
  
  <p>Since I'm using modulo 10 I thought the only possible values should be 0-9.  But when I run the above code, I'm finding that the <code>ELSE</code> clause is indeed being reached and that my data is coming up with 'NONE' on some records as shown:</p>
  
  <pre><code>id                  name    Channel
  001L000000KpgFqIAJ  Acct1   *NONE*
  001L000000KpgFrIAJ  Acct2   Mass
  001L000000KpgFsIAJ  Acct3   Club
  001L000000KpgFtIAJ  Acct4   *NONE*
  001L000000KpgFuIAJ  Acct5   Baby Only
  001L000000KpgFvIAJ  Acct6   *NONE*
  001L000000KpgFwIAJ  Acct7   Mass
  </code></pre>
  
  <p><strong>Can someone please explain what logical error I've made that's allowing the ELSE clause to be reached?</strong></p>
  
  <p>When I run a simple test to just generate the random number like so:</p>
  
  <pre><code>SELECT
      RadomNum = ABS(CHECKSUM(NewId())) % 10
  FROM 
      retailshelf_nil...account A
  ORDER BY 
      1
  </code></pre>
  
  <p>All the numbers generated are from 0-9 as expected, so what's different about this first SQL?</p>
  
  <p>And is there a workaround to ensure that <code>ELSE</code> is never reached?</p>