2010-10-22 138 views
1

我需要GROUP BY,即使是在有值之差爲一列由轉換爲文本的價值和需要被列入選擇列表的文本值集團通過問題

這是怎麼possibe?

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可能會或可能不會是一個文本值或整型,如果是文本值,我需要的所有其他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

你能不能舉個例子? – alex 2010-10-22 12:26:48

+0

如何處理一些樣本數據和一些樣本結果,您所追求的內容從您嘗試的查詢中不明顯。 – 2010-10-22 13:19:00

+0

您使用的是MS-SQl-Server嗎?哪個版本? – Ice 2010-10-22 21:23:25

回答

0

這似乎有點容易,也許我錯過了什麼?你只是想在col2上做一個CAST

SELECT col1 
     ,CAST(col2 AS nvarchar(100)) as Col2 
     ...etc 
+0

我需要從組中刪除該coulumn,並且需要在選擇列表中...什麼去做? – SmartestVEGA 2010-10-22 12:47:48

+0

@SmartestVEGA:我還是不明白。什麼意思是「從組中刪除該列」以及什麼意思是「需要在選擇列表中」?向我們展示一個具有值和預期結果的示例。 – 2010-10-22 13:00:02

+0

我需要的是...假設如果我有幾列 ,並在那一列將始終顯示不同的值...(總是) ,我需要將所有這些不同的值轉換爲常見的文本... 。不是一個號碼 ,我想分組... 它怎麼可能? – SmartestVEGA 2010-10-22 13:03:59

0

藉此:

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 

結果看起來像你的問題:

A B變種c^

B B變種c^