SQL-ORDER BY在子查询中起作用,但在完全查询中失败
我正在尝试设置一个动态查询,以填充动态月份内的平均付款。我有一个正在工作的查询,但它提供了不符合顺序的月份 我将月份分配给变量@columns,并在主查询中使用它来确定PIVOT命令的字段。以下是如何设置变量 正如可以看到的那样,几个月是无序的 但是,如果我只运行子查询 命令很好 发生什么事了?有什么想法吗 先走一步SQL-ORDER BY在子查询中起作用,但在完全查询中失败,sql,sql-order-by,Sql,Sql Order By,我正在尝试设置一个动态查询,以填充动态月份内的平均付款。我有一个正在工作的查询,但它提供了不符合顺序的月份 我将月份分配给变量@columns,并在主查询中使用它来确定PIVOT命令的字段。以下是如何设置变量 正如可以看到的那样,几个月是无序的 但是,如果我只运行子查询 命令很好 发生什么事了?有什么想法吗 先走一步 希望这些图像能像我所希望的那样出现在您的外部选择中,您需要指定ORDER BY以保证订单。目前,您只对派生表进行排序,而不是对最终查询进行排序 SELECT @columns +=
希望这些图像能像我所希望的那样出现在您的外部选择中,您需要指定ORDER BY以保证订单。目前,您只对派生表进行排序,而不是对最终查询进行排序
SELECT @columns += ',' + QUOTENAME(Eff_Period)
FROM
(derived table) AS Raw_Data
ORDER BY Eff_Period
PRINT @columns
我认为,如果您还需要连接文本“,”++QUOTENAMEEff”句点,那么子查询是不必要的。但是你可以不用子查询就可以做到这一点。此外,前100%并不像其他人指出的那样有效,在任何情况下都不需要
SELECT @column += ',' + QUOTENAME(Eff_Period)
FROM Members_Data AS Mbrs
INNER JOIN Claims_Data AS Clms
ON Mbrs.Eff_Period = REPLACE(CONVERT(nvarchar(7), Clms.Date_of_Service, 121), '-', '')
WHERE YEAR(Clms.Date_of_Service) = 2016
GROUP BY Mbrs.Eff_Period
ORDER BY Eff_Period
还有。。。我不得不重新键入截图中的全部文本。对某些人来说,这不是什么大不了的事,但这是我们更喜欢文本而不是屏幕截图的原因之一。是的,答案是外部排序
我认为ORDER BY必须使用字段名,但由于没有字段名,我不知道如何将其放入其中。我尝试使用序号1,不幸的是,它只给出了串联列表中的最终值
但是,它似乎可以采取有效期在外部选择;可能是因为它是JOIN中唯一的名称
然而,这回答了我的问题。这个问题是由一个答案引起的,我认为它解决了一个上覆的问题,但我发现它没有。我现在正想弄清楚
感谢所有回应的人 你为什么使用图像?由于许多原因,图像让你很难回答你的问题。你想让别人回答你的问题吗?为什么这么难呢?请在文本中添加代码和示例,而不是图像。将表格和数据作为文本显示,以便理解why@HoganOp是新来的,他可能不知道该怎么办,试着给他一些建议instead@JuanCarlosOropeza-是吗?如果你想知道这个问题到底是怎么回事,选择TOP 100%ORDER BY,用于将SQL优化器复制到实际操作中,即使在视图中也是如此。这是不可靠的,但如果在子查询扩展之后只出现循环联接,它实际上会工作。
SELECT @column += ',' + QUOTENAME(Eff_Period)
FROM Members_Data AS Mbrs
INNER JOIN Claims_Data AS Clms
ON Mbrs.Eff_Period = REPLACE(CONVERT(nvarchar(7), Clms.Date_of_Service, 121), '-', '')
WHERE YEAR(Clms.Date_of_Service) = 2016
GROUP BY Mbrs.Eff_Period
ORDER BY Eff_Period