我有下表:
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
是否可以这样做?
谢谢。
答案 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