【问题标题】:Group by problem按问题分组
【发布时间】:2010-10-22 12:25:44
【问题描述】:

我需要分组,即使通过转换为文本值来区分列的值并且需要将该文本值包含在选择列表中

这怎么可能?

  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 int 转换为文本并按

看这个例子:

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)

【问题讨论】:

  • 一些样本数据和一些样本结果怎么样,从你尝试的查询中看不出你想要什么。
  • 您在使用 MS-SQl-Server 吗?哪个版本?
  • col2 = "3 C" 是什么意思?这必须是 col2 的 varchar(10) 数据类型,为什么一列中有两个值?您知道,您有一个数据库,并且最小规范化将这些值放在单独的列中:col2 = 3, col3 = "C"

标签: sql sql-server sql-server-2005 tsql


【解决方案1】:

这似乎有点容易,也许我错过了什么?你只是想在 col2 上做一个CAST 吗?

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

【讨论】:

  • 我需要从 group by 中删除该 coulumn 并且需要在选择列表中...该怎么办?
  • @SmartestVEGA:我还是不明白。什么是“从分组中删除该列”以及“需要在选择列表中”是什么意思?向我们展示一个包含值和预期结果的示例。
  • 我需要的是......假设如果我有几列并且其中一列将始终显示不同的值...(总是)并且我需要将所有这些不同的值转换为通用文本....不是一个数字,我想按那个分组...这怎么可能?
【解决方案2】:

拿这个:

 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2011-04-01
    • 2021-10-27
    • 2014-05-24
    • 2012-02-19
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多