【发布时间】:2013-08-06 16:51:22
【问题描述】:
我的存储过程是这样的:
alter PROCEDURE [dbo].[ParkingDeatailsReportnewstack]
@startdate NVARCHAR(100),
@enddate NVARCHAR(100)AS
BEGIN
DECLARE @cols AS NVARCHAR(MAX) , @query AS NVARCHAR(MAX)
SELECT @cols = STUFF(( SELECT DISTINCT ',' + QUOTENAME(Vtype)
FROM dbo.VType_tbl FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @query =
'SELECT LocName,Date, ' + @cols + '
from (
select l.LocName,v.Vtype, convert(date, dtime) as Date
from Transaction_tbl t
join VType_tbl v on t.vtid = v.vtid
join dbo.Location_tbl l on t.locid=l.Locid
where dtime between ''' + @startdate + ''' and ''' + @enddate + ''' order by l.LocName
) d
pivot (
count(Vtype) for Vtype in (' + @cols + ')
) p '
EXEC sys.sp_executesql @query
End
我想按升序获取我的 locname,但同时给出 order by l.LocName 出现错误:ORDER BY 子句在视图、内联函数、派生表、子查询中无效
【问题讨论】:
-
您是否尝试过在枢轴后移动
ORDER BY LocName?那么在) p之后呢? -
不管怎样,存储过程不需要
BEGIN和END语句。 -
我尝试在 p 之后移动订单,那时我收到这样的错误“无法绑定多部分标识符“l.LocName”
-
@user2648161 不要使用别名,只需使用
LocName -
请修正您的 proc 名称的拼写,否则维护人员将永远诅咒您的名字。
标签: sql-server