小编Dan*_*ore的帖子

SQL Server中的Concat组

如果我有这样的表格:

+------------+
| Id | Value |
+------------+
| 1  | 'A'   |
|------------|
| 1  | 'B'   |
|------------|
| 2  | 'C'   |
+------------+
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的结果集:

+------------+
| Id | Value |
+------------+
| 1  | 'AB'  |
|------------|
| 2  | 'C'   |
+------------+
Run Code Online (Sandbox Code Playgroud)

我知道使用GROUP_CONCAT在MySQL中很容易做到,但我需要能够在MSSQL 2005中做到这一点

谢谢

(重复如何使用GROUP BY来连接SQL Server中的字符串?)

sql sql-server group-by string-concatenation

10
推荐指数
2
解决办法
2万
查看次数

CombineLatest,但只推左

我需要实现一个版本CombineLatest(我WithLatest在这里称之为),它调用左边每个项目的选择器和右边的最新项目.它不应该仅仅改变右侧的项目.

我认为这是建立Observable.Create还是现有扩展的组合并不是特别重要; 无论哪种方式,我都会将其作为"盒装"扩展方法.

var left = new Subject<int>();
var right = new Subject<int>();

left.WithLatest(right, (l,r) => l + " " + r).Dump();

left.OnNext(1);   // <1>
left.OnNext(2);   // <2>
right.OnNext(1);  // <3>
right.OnNext(2);  // <4>
left.OnNext(3);   // <5>
Run Code Online (Sandbox Code Playgroud)

应该屈服

2 1
3 2
Run Code Online (Sandbox Code Playgroud)

编辑:我的例子的逻辑是:

  1. 左侧变为填充1.右侧为空,没有值被推送.
  2. 左边用2更新(它忘记了以前的值).右边仍然是空的,所以没有任何东西被推开.
  3. 右侧变为1,因此左= 2(最新值),右= 1被推.到目前为止,WithLatest和之间没有区别CombineLatest
  4. 权利更新 - 没有任何推动.这有什么不同
  5. Left更新为3,因此Left = 3,Right = 2(最新值)被推送.

有人建议我尝试:

var lr = right.ObserveOn(Scheduler.TaskPool).Latest();
left.Select(l => l + " " …
Run Code Online (Sandbox Code Playgroud)

system.reactive

7
推荐指数
2
解决办法
2083
查看次数