【问题标题】:Get number of same rows in concat col in sql获取sql中concat列中的相同行数
【发布时间】:2020-09-06 14:48:45
【问题描述】:

我正在尝试 Concat(description, number, date) 然后像 count(concat(description,number, date))

但我遇到了错误。我正在尝试连接三列,并希望返回一行在 col 中出现的次数。可以请教

【问题讨论】:

  • 请将您的数据库添加到描述中并提供错误信息
  • count((concat([ description, [date],[number])
  • 我收到错误,因为选择列表中的数字无效,因为它不包含建议的函数或 group by 子句
  • 您希望通过此查询获得什么?
  • edit您的问题(通过点击下面的edit链接)并添加您正在使用的完整查询作为@ 987654323@。 No screen shots

标签: sql count case concat


【解决方案1】:

如果您按连接的字符串进行分组,您已经获得了所有不同的组合。只需再添加一个字段即可知道每行出现多少次 sum(1) 或 count(1)/count(*)。

编辑

SELECT concat(t1.description,t1,number, t1.date) AS UID,
CASE WHEN t2.NUM_TIMES_UID <= 1 THEN 'y' ELSE 'dummy' END AS DUMMY_VAR
FROM table t1
LEFT JOIN (
     SELECT
         concat(description,number, date) AS UID,
         SUM(1) AS NUM_TIMES_UID
     FROM table
     GROUP BY
         concat(description,number, date)
) t2 ON (concat(t1.description,t1,number, t1.date) = concat(t2.description,t2,number, t2.date))

【讨论】:

  • 谢谢,但我需要这个 in case 语句来检查是否多次返回 concat 旁边的行。我将如何做到这一点?
  • 谢谢,但是当我将此加入主查询时,它给了我错误。抱歉,我是 SQL 新手
【解决方案2】:

返回分组行和该行在输入表中存在的次数的简单决策:

with items as (
select concat(description,number, date) as item
from table1
group by concat(description,number, date)
)

select item, count(item) as item_cnt
from items
group by item

【讨论】:

  • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案以添加解释并说明适用的限制和假设。 From Review
猜你喜欢
  • 2013-01-03
  • 2021-12-23
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多