Don't like ads? PRO users don't see any ads ;-)
Guest

Select distinct not-null rows SQL server 2005

By: a guest on Mar 19th, 2012  |  syntax: None  |  size: 2.11 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ID   ID1     ID2     ID3     ID4     ID5
  2. 1   NULL    NULL    NULL    NULL    1
  3. 2   NULL    NULL    NULL    2       NULL
  4. 3   NULL    NULL    NULL    2       1
  5. 4   3       NULL    NULL    2       NULL
  6. 5   3       NULL    NULL    2       1
  7. 6   NULL    5       NULL    2       NULL
  8.        
  9. ID   ID1     ID2     ID3     ID4     ID5
  10. 5   3       NULL    NULL    2       1
  11. 6   NULL    5       NULL    2       NULL
  12.        
  13. SELECT ID1, ID2, ID3, ID4, ID5
  14. FROM IDS OUTT
  15. WHERE NOT EXISTS (SELECT 1
  16.                 FROM IDS INN
  17.                 WHERE OUTT.ID != INN.ID AND
  18.                       (ISNULL(OUTT.ID1, INN.ID1) = INN.ID1 OR (INN.ID1 IS NULL AND OUTT.ID1 IS NULL)) AND
  19.                       (ISNULL(OUTT.ID2, INN.ID2) = INN.ID2 OR (INN.ID2 IS NULL AND OUTT.ID2 IS NULL)) AND
  20.                       (ISNULL(OUTT.ID3, INN.ID3) = INN.ID3 OR (INN.ID3 IS NULL AND OUTT.ID3 IS NULL)) AND
  21.                       (ISNULL(OUTT.ID4, INN.ID4) = INN.ID4 OR (INN.ID4 IS NULL AND OUTT.ID4 IS NULL)) AND
  22.                       (ISNULL(OUTT.ID5, INN.ID5) = INN.ID5 OR (INN.ID5 IS NULL AND OUTT.ID5 IS NULL)))
  23.        
  24. SELECT ID1, ID2, ID3, ID4, ID5
  25. FROM IDS OUTT
  26. WHERE NOT EXISTS (SELECT 1
  27.                 FROM IDS INN
  28.                 WHERE OUTT.ID != INN.ID AND
  29.                       coalesce(OUTT.ID1, INN.ID1,-1) = isnull(INN.ID1,-1) AND
  30.                       coalesce(OUTT.ID2, INN.ID2,-1) = isnull(INN.ID2,-1) AND
  31.                       coalesce(OUTT.ID3, INN.ID3,-1) = isnull(INN.ID3,-1) AND
  32.                       coalesce(OUTT.ID4, INN.ID4,-1) = isnull(INN.ID4,-1) AND
  33.                       coalesce(OUTT.ID5, INN.ID5,-1) = isnull(INN.ID5,-1))
  34.        
  35. ID   ID1     ID2     ID3     ID4     ID5
  36. 1   NULL    NULL    NULL    NULL    1
  37. 2   NULL    NULL    NULL    2       NULL
  38. 3   NULL    NULL    NULL    2       1
  39. 4   3       NULL    NULL    2       NULL
  40. 5   3       NULL    NULL    2       1
  41. 6   NULL    5       NULL    2       NULL
  42.        
  43. ID   ID1     ID2     ID3     ID4     ID5
  44. 5   3       NULL    NULL    2       1
  45. 6   NULL    5       NULL    2       NULL
  46.        
  47. Select
  48.  SUM(id1)/COUNT(id1),
  49.  SUM(id2)/COUNT(id2),
  50.  SUM(id3)/COUNT(id3),
  51.  SUM(id4)/COUNT(id4),
  52.  SUM(id5)/COUNT(id5)  From TABLE