我尝试使用Google搜索此问题但仍无法找到解决方案。 我有2列合并如下:
第一张表:
ID Name Item
42 america 1433
42 america 1695
42 america 1234
8 london 1433
8 london 1705
8 london 1432
第二张表:
ID CreatedBy
42 John
42 Erica
8 Amy Song
8 Alfred
如果我只是加入两个表,它将变成这样:
ID Name Item CreatedBy
42 america 1433 John
42 america 1695 John
42 america 1234 John
42 america 1433 Erica
42 america 1695 Erica
42 america 1234 Erica
8 london 1433 Amy Song
8 london 1705 Amy Song
8 london 1432 Amy Song
8 london 1433 Alfred
8 london 1705 Alfred
8 london 1432 Alfred
创建的列仅与ID相关,与Name和Item无关。 我只想将CreatedBy作为新列插入到仅链接到ID的第一个表中,因此预期结果如下所示。 有什么方法可以得到这样的结果吗?
ID Name Item CreatedBy
42 america 1433 John
42 america 1695 Erica
42 america 1234 NULL
8 london 1433 Amy Song
8 london 1705 Alfred
8 london 1432 NULL
假设我们改变了第二个表:
第二张表:
ID CreatedBy
42 John
8 Amy Song
结果将如下:
ID Name Item CreatedBy
42 america 1433 John
42 america 1695 NULL
42 america 1234 NULL
8 london 1433 Amy Song
8 london 1705 NULL
8 london 1432 NULL
我非常感谢您的帮助,并感谢您使用先进的乳房。
注意:列CreatedBy是仅与ID相关且与Name和Item无关的独立列。
答案 0 :(得分:1)
所以,我会回答你,即使有些人在评论中讨论它可能会有不同意见,因为你的问题没有合适的逻辑。
请务必注意,此答案适用于此特定情况,如果它无法为您提供更大数据集的正确数据,则必须提供更多信息。
我做了什么:
我已经从第一个集合中创建了一个子集,并按name
对其进行排序(并将其编入索引,窗口函数),然后我创建了第二个集合中的另一个子集,由id
对其进行排序,因此,我有:
select id, name, item, row_number() over (partition by name order by name) idx from tablea
并且
select id, createdby, row_number() over (partition by id order by id) idx from tableb
然后我将tablea
与tableb
id
联系起来idx
,订单创建了列select a.id, a.name, a.item, b.createdby
from (select id, name, item, row_number() over (partition by name order by name) idx from tablea) a
left join
(select id, createdby, row_number() over (partition by id order by id) idx from tableb) b
on (a.id = b.id and a.idx=b.idx)
order by a.name
所以
order by
$(document).ready(function () {
var table = $('#DataLegal').DataTable({
"paging": true
});
$('a.toggle-vis').on('click', function (e) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
//Get the column API object
var column = table.column($(this).attr('data-column'));
// Toggle the visibility
column.visible(!column.visible());
});
var ms = $('#magicsuggest').magicSuggest({
// Converts our C# object in a JSON string.
data: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(columns))
});
$(ms).on('selectionchange', function(e,m){
// Turn on ALL columns... Like a reset...
$.each(table.columns()[0], function(index) {
table.column(index).visible(true);
});
// Turn off each column in the value array... Value = int[0, 1, 2, ...]
$.each(this.getValue(), function(index, item) {
table.column(item).visible(false);
});
});
});
只是为了得到您在问题上提出的结果。
请在此处查看:http://sqlfiddle.com/#!3/7ef70/3
对于您的第二个示例数据:http://sqlfiddle.com/#!3/675625/1