Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按语句排序_Sql_Tsql - Fatal编程技术网

Sql 按语句排序

Sql 按语句排序,sql,tsql,Sql,Tsql,我想为下面的查询订购ASC中的时间。我尝试在WHERE子句之后添加ORDERBY,但由于使用了join语句,因此无法得到结果。我在这里添加了完整的sql查询 ALTER PROCEDURE [dbo].[USP_GetFlightInfo] ( @Origin NVARCHAR(50)=null, @Destination NVARCHAR(50)=null, @FlightNo NVARCHAR(50)= null ) AS BEGIN SET

我想为下面的查询订购ASC中的时间。我尝试在WHERE子句之后添加ORDERBY,但由于使用了join语句,因此无法得到结果。我在这里添加了完整的sql查询

ALTER PROCEDURE [dbo].[USP_GetFlightInfo]
    (
    @Origin NVARCHAR(50)=null,
    @Destination NVARCHAR(50)=null,
    @FlightNo NVARCHAR(50)= null
    )
AS

BEGIN
    SET NOCOUNT ON;
 IF @FlightNo IS NULL
 (
        SELECT tfs.FlightNo,tfs.Origin,tfs.Destination,tfs.[Time],tfs.RevisedTime,tfSSS.DescriptionName, tfSS.FlightStatus from tblFlightSchedule tfs
       INNER JOIN tblFlightStatus tfSS ON tfs.FSId= tfSS.FSId 
     LEFT OUTER JOIN tblFlightStatusDescription tfSSS ON tfSSS.FSDId= tfs.FSDId
        where tfs.Origin=@Origin and tfs.Destination =@Destination
        ORDER BY tfs.[Time];
        )
        ELSE IF @FlightNo IS NOT NULL
        (

                SELECT tfs.FlightNo,tfs.Origin,tfs.Destination,tfs.[Time],tfs.RevisedTime,tfSSS.DescriptionName, tfSS.FlightStatus from tblFlightSchedule tfs
     INNER JOIN  tblFlightStatus tfSS ON tfs.FSId= tfSS.FSId 
     LEFT OUTER JOIN tblFlightStatusDescription tfSSS ON tfSSS.FSDId= tfs.FSDId
       where tfs.Origin=@Origin and tfs.Destination =@Destination and tfs.FlightNo=@FlightNo and tfs.FlightNo =@FlightNo
        ORDER BY tfs.[Time];
        )

        END
只要说:

SELECT tfs.FlightNo,tfs.Origin,tfs.Destination,tfs.[Time],tfs.RevisedTime,
       tfSSS.DescriptionName, tfSS.FlightStatus
FROM tblFlightSchedule tfs
INNER JOIN  tblFlightStatus tfSS ON tfs.FSId= tfSS.FSId 
LEFT OUTER JOIN tblFlightStatusDescription tfSSS ON tfSSS.FSDId= tfs.FSDId
WHERE tfs.Origin=@Origin and
      tfs.Destination =@Destination and
      (
         tfs.FlightNo =@FlightNo or
         @FlightNo is null
      )
ORDER BY tfs.[Time];
作为存储过程中的代码。不需要使用
IF
并复制查询

现有代码中的主要问题是SQL Server使用
BEGIN
END
来括起代码块,而不是括号
()
。因此,一个模型应该是这样的:

IF <Something>
BEGIN
  --If block
END
ELSE
BEGIN
  --Else block
END
IF
开始
--If块
结束
其他的
开始
--Else块
结束

使用按tfs排序的
有什么问题。[时间]
?您能显示您尝试的实际查询吗?@TimBiegeleisen Order By附近的语法不正确,应为),UNION或除非我在where条件后按tfs下订单。[Time]我发现您的查询没有任何错误,这让我怀疑产生这个错误的不是你在问题中发布的。你显示的查询没有显示任何语法错误。在没有验证它们是否足够相似以显示您所询问的相同行为之前,不要询问与您的实际查询“类似”的查询。不,您问题中的查询不是。我已经运行过了。通过给我们提供重现您所看到错误的方法,帮助我们帮助您。目前,我们不能。