查询按照从某个值开始的值对表进行排序。
电流:
ZQE123
ABC123
ABC324
ALP234
如果我从变量'ABC324'
订购ABC324
ALP234
ZQE123
ABC123
如果我从变量'ZZZ123'
订购ABC123
ABC324
ALP234
ZQE123
它基本上是一个有序的循环列表,具体取决于指定的变量。
我尝试过使用RANK()
功能,但没有太多运气。
SELECT
Location,
RANK() OVER (ORDER BY Location)
FROM Table1
输出:
ZQE123 4
ABC123 1
ABC324 2
ALP234 3
如何根据当前位置进行操作?
答案 0 :(得分:7)
public class TblManagement extends JInternalFrame {
JList<String> lastListSelected = null;
.
.
public TblManagement(JDesktopPane desk) {
MouseInputAdapter listMouseHandler = new ListMouseHandler();
// create JLists.
columnslist[i].addMouseListener(listMouseHandler);
}
private class ListMouseHandler extends MouseInputAdapter {
public void mouseClicked(MouseEvent e) {
JList<String> currentListSelected = (JList<String>) e.getSource();
int selectedIndex = currentListSelected.getSelectedIndex();
String selectedValue = currentListSelected.getModel().getElementAt(selectedIndex);
//System.out.println(selectedValue);
clearSelections(mainPanel, currentListSelected, lastListSelected);
lastListSelected = currentListSelected;
System.out.println(lastListSelected.getModel().getElementAt(0));
}
}
void clearSelections(Container container, JList currentListSelected, JList lastListSelected) {
for (Component c : container.getComponents()) {
if (c instanceof JList) {
if ( c != lastListSelected && c != currentListSelected) {
System.out.println("JList found");
((JList) c).clearSelection();
}
}
else
if (c instanceof Container) {
clearSelections((Container)c, currentListSelected, lastListSelected);
}
}
}
将是一种方式。或另一个(假设没有空值)
ORDER BY CASE
WHEN YourCol >= @Variable THEN 0
ELSE 1
END,
YourCol
答案 1 :(得分:1)
只是另一种选择,虽然我喜欢 Martin Smith 的回答:
DECLARE @Start CHAR(6) = 'ABC324';
DECLARE @T TABLE (Val CHAR(6));
INSERT INTO @T VALUES ('ZQE123'), ('ABC123'), ('ABC324'), ('ALP234');
DECLARE @Count INT;
SELECT @Count = COUNT(1) FROM @T;
;WITH Ranked AS
(
SELECT *, RANK() OVER (ORDER BY Val) Ord FROM @T
)
SELECT Val FROM Ranked
ORDER BY CASE WHEN Val >= @Start THEN Ord ELSE Ord + @Count END;