Группировать по проблеме - PullRequest
1 голос
/ 22 октября 2010

Мне нужно сгруппировать, даже если есть разница в значениях для столбца путем преобразования в текстовое значение, и необходимо, чтобы это текстовое значение было включено в список выбора

Как это возможно?

  SELECT col1,col2
   FROM
       (
         SELECT col1,col2 FROM table1
         UNION ALL
     SELECT col1,col2 FROM table2
         UNION ALL
         SELECT col1,col2 FROM table3

       )tbl
  GROUP BY  tbl.col1
           ,tbl.col2

здесь col2 может быть или не быть текстовым значением или int, если это текстовое значение, мне нужно преобразовать все другие целые числа col2 в текст и сделать группу с помощью

.

Table 1
-------
A B  3   C 
A B  var C


Table 2
-------
UNION ALL

B B  3   C 
B B  var C


Table 3
-------
UNION ALL

B B  3   C 
B B  3   C

Result of each table should be 
-------

Table 1
-------
A B  var C (since there is a var in the any of the row in that column in that table)

Table 2
-------
B B  var C (since there is a var in the any of the row in that column in that table)

Table 3
-------
B B  3   C  (here it remains 3 since there is not value call var in any of the row in that column)

Result 
------
A B  var C
B B  var C  (since there is a var in the any of the row in that column in that table)

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

ПРИНЯТЬ ЭТО:

 SELECT col1,col2
   FROM
       (
         SELECT col1,col2 FROM table1
         UNION ALL
     SELECT col1,col2 FROM table2
         UNION ALL
         SELECT col1,col2 FROM table3

       )tbl
where col2 not like '3%'
  GROUP BY  tbl.col1

Результат выглядит как ваш вопрос:

AB var C

BB var C

0 голосов
/ 22 октября 2010

Это кажется немного легким, может быть, я что-то упустил? Вы просто хотите сделать CAST на col2?

SELECT  col1
       ,CAST(col2 AS nvarchar(100)) as Col2
       ...etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...