在单独列中的查询输出上添加最小值

时间:2016-11-24 08:41:22

标签: sql sql-server-2008-r2

我有下表:

No    Item     Value   
----------------------------
1     A        5
2     B        8
3     C        9

如果我在Value字段上使用Min功能,那么我将获得5

我的问题是,如何将MIN值放入新列?如下结果:

No    Item     Value   newCol
----------------------------
1     A        5       5
2     B        8       5
3     C        9       5

是否可以这样做?
谢谢。

4 个答案:

答案 0 :(得分:2)

类似的东西:

select No, Item, Value, (select min(value) from table)
from table

应该这样做。

答案 1 :(得分:1)

我更喜欢在联接中执行子查询,您必须为该字段命名。像这样的东西;

样本数据

CREATE TABLE #TestData (No int, item nvarchar(1), value int)
INSERT INTO #TestData (No, item, value)
VALUES
(1,'A',5)
,(2,'B',8)
,(3,'C',9)

查询

SELECT 
     td.No
    ,td.item
    ,td.value
    ,a.Min_Value
FROM #TestData td
CROSS JOIN
(
    SELECT
       MIN(Value) Min_Value
    FROM #TestData
) a

结果

No  item    value   Min_Value
1   A       5       5
2   B       8       5
3   C       9       5

答案 2 :(得分:1)

通过使用适当的closeEditor子句,您可以做得更简单。

def closeEditor(self, editor, hint):
    is_cancelled = (hint == QtGui.QAbstractItemDelegate.RevertModelCache)

    if not is_cancelled:
        for index in self.selectedIndexes():
            if index == self.currentIndex():
                continue

            input_value = ??? # Don't know how to get this from here!

            self.model().setData(index, input_value, QtCore.Qt.EditRole)

    return QtGui.QTableWidget.closeEditor(self, editor, hint)

这比顶级OVER()中的SELECT * , MIN(Value) OVER () AS [newCol] FROM Table 更简单,资源消耗更少。

示例代码:

(SELECT MIN(Value) FROM TABLE)

答案 3 :(得分:0)

使用表中最小值的交叉连接: SELECT * FROM #Tbl1 CROSS JOIN (SELECT MIN(Value1) Value1 FROM #Tbl1) A