首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

create view裏面有union all 不能排序,该如何处理

2013-08-09 
create view裏面有union all 不能排序--創建視圖 create view ccc as (select * from (select CONVERT(var

create view裏面有union all 不能排序
--創建視圖 

create view ccc as 
(select * from (
  select CONVERT(varchar(100),a.Sub_ShipDate1,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
  a.Bill_to,a.Customer,a.JobName,a.Sub_Qty1 Quantity,
  isnull(a.SetDeclareFactory,'待確認') SetDeclareFactory,
  b.currency,b.unitprice_d,a.Sub_Qty1 Quantity1,a.Sub_Qty1*b.unitprice_d Total_Sales,
  b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b 
  where a.Sub_ShipDate1<>''and a.Sub_Qty1<>'' and a.JobNumber=b.ordernumber 
  and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
  
  union all
  
  select CONVERT(varchar(100),a.Sub_ShipDate2,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
  a.Bill_to,a.Customer,a.JobName,a.Sub_Qty2 Quantity,
  isnull(a.SetDeclareFactory,'待確認') SetDeclareFactory,
  b.currency,b.unitprice_d,a.Sub_Qty2 Quantity1,a.Sub_Qty2*b.unitprice_d Total_Sales,
  b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b 
  where a.Sub_ShipDate2<>''and a.Sub_Qty2<>'' and a.JobNumber=b.ordernumber 
  and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
  )
  as qqq order by JobNumber
  ) 


--出錯信息
Msg 1033, Level 15, State 1, Procedure ccc, Line 22
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, 
and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

----如果不用 order by JobNumber 正常,請問怎樣可以排序

[解决办法]
视图中order by 时要用,Top,如下试试,应该可以

CREATE VIEW [dbo].[View_1]
AS
SELECT     TOP (100) PERCENT HS_Shipdate, TeamHandlingBy, JobNumber, Version, Bill_to, Customer, JobName, Quantity, SetDeclareFactory, currency, 


                      unitprice_d, Quantity1, Total_Sales, status, pcost, pcostratio
FROM         (SELECT     CONVERT(varchar(100), a.Sub_ShipDate1, 23) AS HS_Shipdate, a.TeamHandlingBy, a.JobNumber, a.Version, a.Bill_to, a.Customer, 
                                              a.JobName, a.Sub_Qty1 AS Quantity, ISNULL(a.SetDeclareFactory, '待確認') AS SetDeclareFactory, b.currency, b.unitprice_d, 
                                              a.Sub_Qty1 AS Quantity1, a.Sub_Qty1 * b.unitprice_d AS Total_Sales, b.status, b.pcost, b.pcostratio
                       FROM          dbo.schedulingShipSchedule AS a CROSS JOIN
                                              dbo.MailingPriceCalVH AS b
                       WHERE      (a.Sub_ShipDate1 <> '') AND (a.Sub_Qty1 <> '') AND (a.JobNumber = b.ordernumber) AND (a.Version = b.versionno) AND 
                                              (a.TeamHandlingBy = 'Mailing')
                       UNION ALL
                       SELECT     CONVERT(varchar(100), a.Sub_ShipDate2, 23) AS HS_Shipdate, a.TeamHandlingBy, a.JobNumber, a.Version, a.Bill_to, a.Customer, 


                                             a.JobName, a.Sub_Qty2 AS Quantity, ISNULL(a.SetDeclareFactory, '待確認') AS SetDeclareFactory, b.currency, b.unitprice_d, 
                                             a.Sub_Qty2 AS Quantity1, a.Sub_Qty2 * b.unitprice_d AS Total_Sales, b.status, b.pcost, b.pcostratio
                       FROM         dbo.schedulingShipSchedule AS a CROSS JOIN
                                             dbo.MailingPriceCalVH AS b
                       WHERE     (a.Sub_ShipDate2 <> '') AND (a.Sub_Qty2 <> '') AND (a.JobNumber = b.ordernumber) AND (a.Version = b.versionno) AND 
                                             (a.TeamHandlingBy = 'Mailing')) AS qqq
ORDER BY JobNumber


[解决办法]
--試試以下:
create view ccc as 
(
SELECT TOP (100) PERCENT *
FROM
(
  select CONVERT(varchar(100),a.Sub_ShipDate1,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
  a.Bill_to,a.Customer,a.JobName,a.Sub_Qty1 Quantity,
  isnull(a.SetDeclareFactory,'待確認') SetDeclareFactory,
  b.currency,b.unitprice_d,a.Sub_Qty1 Quantity1,a.Sub_Qty1*b.unitprice_d Total_Sales,
  b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b 
  where a.Sub_ShipDate1<>''and a.Sub_Qty1<>'' and a.JobNumber=b.ordernumber 


  and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
   
  union all
   
  select CONVERT(varchar(100),a.Sub_ShipDate2,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
  a.Bill_to,a.Customer,a.JobName,a.Sub_Qty2 Quantity,
  isnull(a.SetDeclareFactory,'待確認') SetDeclareFactory,
  b.currency,b.unitprice_d,a.Sub_Qty2 Quantity1,a.Sub_Qty2*b.unitprice_d Total_Sales,
  b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b 
  where a.Sub_ShipDate2<>''and a.Sub_Qty2<>'' and a.JobNumber=b.ordernumber 
  and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
) a
ORDER BY JobNumber 
)

热点排行