如何获得表中两列中唯一值的计数?

时间:2018-11-29 01:11:02

标签: sql oracle distinct multiple-columns

我有一个包含column1和column2以及其他列的表吗?

我需要对从column1和column2获取的所有行进行唯一值计数。 可能的查询: 从中选择count(*) ((从表1中选择不同的列1)UNION     (从表1中选择不同的column2));

我还需要按如下方式在所有行中计数唯一值: “ column1” +“-” +“ column2” “ column2” +“-” +“ column1”

可能的查询: 从中选择count(*) ((从表1中选择不同的列1,列2)UNION     (从表1中选择不同的column2,column1))

我认为这两个查询都可能存在缺陷。

样本数据:

第1栏第2栏 值1 null 空值1 值1值2 值2值1 值4空 Value5 null

查询1的结果:4(值1,值2,值4,值5) 查询2的结果:5(Value1,Value1-Value2,Value2-Value1,Value4,Value5)

Null将被忽略,连字符被排除在外。或连字符可以忽略。连字符并不具体。

1 个答案:

答案 0 :(得分:0)

听起来像您需要类似的东西

# NOTE: Overriding the default method
def clean(self):
    cleaned_data = super().clean()
    source = str(cleaned_data['source'])
    destination = str(cleaned_data['destination'])
    quantity_moved = cleaned_data['quantity_moved']
    item = cleaned_data['item']

    # Checking if the quantity to move is more than the current stock at the source location
    max_qty = ActualStock.objects.filter(item=item, location=cleaned_data['source'])[0].current_stock
    print(">" * 80, max_qty)

    if quantity_moved > max_qty:
        msg = "エラー:移動元に商品の数は足りません。現在, {0}に {1}の数は {2} です。".format(source, item, max_qty)
        self.add_error('quantity_moved', msg)


    # Checking if the source and destination are same
    if destination == source:
        msg = 'エラー:移動先と移動元が同じです。'
        self.add_error('source', msg)
        self.add_error('destination', msg)

    return cleaned_data