【问题标题】:T-SQL for combining 2 columns' values into one with "replicate"T-SQL 用于将 2 列的值与“复制”组合为一个
【发布时间】:2010-10-17 22:23:06
【问题描述】:

有一个表,其值如下:

Sets | Reps
-----+------
2    | 10
3    | 15
3    | 12
4    | 8

我需要在我的 SELECT 语句中将这两个值合并为一个,这样我才能得到

SELECT ... AS Reps FROM Table

Reps
------------
10,10
15,15,15
12,12,12
8,8,8,8

任何想法如何做到这一点?

测试脚本:

DECLARE @Test TABLE ([Sets] INT, [Reps] INT);

INSERT INTO @Test VALUES (2, 10);
INSERT INTO @Test VALUES (3, 15);
INSERT INTO @Test VALUES (3, 12);
INSERT INTO @Test VALUES (4, 8);

SELECT [Sets], [Reps] FROM @Test;

// Here is an answer by tpdi:
SELECT CAST([Reps] AS VARCHAR) +
       REPLICATE(',' + CAST([Reps] AS VARCHAR), [Sets] - 1)
       AS [Reps] FROM @Test;

【问题讨论】:

  • 我很好奇,你为什么要这样做?

标签: sql sql-server sql-server-2008


【解决方案1】:

像这样:

select substring(replicate(','+cast(Reps as varchar),Sets),2,8000) as Reps
from Table

【讨论】:

    【解决方案2】:

    select cast(reps as varchar) + replicate(',' + cast(reps as varchar), sets - 1) 从表

    【讨论】:

      【解决方案3】:

      选择 SUBSTRING(REPLICATE(CAST([Reps] as varchar)+',' , [Sets]), 0, LEN(REPLICATE(CAST([Reps] as varchar)+',' , [Sets])) ) 作为 [代表] 来自@Test

      【讨论】:

      • 字符串索引是从一开始的,而不是从零开始的。子字符串调用不会删除任何内容,因为您使用的是字符串的完整长度。
      猜你喜欢
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      相关资源
      最近更新 更多