如何按标准(TSQL)订购查询

时间:2017-11-09 09:30:20

标签: sql-server tsql

我有这个问题。

SELECT R.ID, R.DESCRIZIONE
FROM AA_V_ATS_RICHIESTE R
ORDER BY R.FILESTATEID

FileStateID的值为:

  • 140
  • 160
  • 190
  • 200
  • 5

我想选择的顺序是这样的:

首先是FileStateID = 200的记录 那么FileStateID = 140的记录 那么FileStateID = 5的记录 .. ..

如何使用此模式订购我的选择?

3 个答案:

答案 0 :(得分:1)

创建一个您订购它们的列,然后在order by子句中使用它,
像这样的东西:

SELECT R.ID, R.DESCRIZIONE,
Case
when R.FileStateID = 200 then 1,
when R.FileStateID = 140 then 2, 
when R.FileStateID = 5   then 3,
when R.FileStateID = 160 then 4 
ELSE 0 END AS order_
FROM AA_V_ATS_RICHIESTE R
ORDER BY order_

答案 1 :(得分:0)

如果您不想在ORDER BY clause中对订单序列进行硬编码,则可以使用一个表来定义每个FileStatID的订单序列。那么你的查询就是

SELECT R.ID, R.DESCRIZIONE
FROM  AA_V_ATS_RICHIESTE R
      INNER JOIN FILESTAT F ON R.FILESTATEID = F.FILESTATEID
ORDER BY F.SEQ_NO

答案 2 :(得分:0)

试试这个:

import { NextFunction } from 'express';
import { Schema, model } from 'mongoose';
class BookSchema {
    private bookSchema: Schema;
    constructor() {
        this.setSchema();
    }
    public getBookSchema(): Schema {
        return this.bookSchema;
    }
    private setSchema() {
        this.bookSchema = new Schema({
            createdAt: Date,
            title: String,
            author: String
        }).pre('save', (next: NextFunction) => this.preSave(next));
    }

    private preSave(next: NextFunction) {
        if(!this.bookSchema.get('createdAt'))
            this.bookSchema.set('createdAt', new Date);
        next();
    }
}
const book = new BookSchema;
export const Books = model('Books', book.getBookSchema());
相关问题