【发布时间】:2020-10-18 15:23:49
【问题描述】:
我在 SQL Server 2012 上工作,我面临问题:我无法将包含单元的功能安排为相同显示顺序的第二个项目显示。
以特征族为例
'Family' as [Family], 'FamilyMaxValue' as [FamilyMaxValue], 'FamilyUnit' as [FamilyUnit]
我需要它如下
'Family' as [Family], 'FamilyUnit' as [FamilyUnit],'FamilyMaxValue' as [FamilyMaxValue]
Feature 和 Unit 以及最大值为每个 Feature 获得相同的 DisplayOrder,但我的问题
如何获得相同显示顺序的单位作为第二显示。
含义的变化将是用逗号分隔的项目顺序,以显示特征单元作为相同显示顺序的第二个显示。
create table #SplitNumberAndUnitsFinal
(
DKFeatureName nvarchar(100),
DisplayOrder int
)
insert into #SplitNumberAndUnitsFinal (DKFeatureName,DisplayOrder)
values
('package',1),
('packageUnit',1),
('Family',2),
('FamilyMaxValue',2),
('FamilyUnit',2),
('parts',3),
('partsMaxValue',3),
('partsUnit',3)
DECLARE @Header nvarchar(max)=( select
substring(
(
Select ', '''+ DKFeatureName +''' as ['+ DKFeatureName +']' AS [text()]
From #SplitNumberAndUnitsFinal
GROUP BY DKFeatureName
ORDER BY MIN(DisplayOrder)
--order by DisplayOrder
For XML PATH ('')
), 2, 10000) [Columns])
print @Header
预期结果将特征单元作为第二个显示排列为:
Feature,FeatureUnit,FeatureMaxValue according to same display Order
'package' as [package], 'packageUnit' as [packageUnit],
'Family' as [Family], 'FamilyUnit' as [FamilyUnit],'FamilyMaxValue' as [FamilyMaxValue],
'parts' as [parts], 'partsUnit' as [partsUnit],'partsMaxValue' as [partsMaxValue]
我不需要显示如下:
Feature,FeatureMaxValue,FeatureUnit for same Display Order
'package' as [package], 'packageUnit' as [packageUnit],
'Family' as [Family], 'FamilyMaxValue' as [FamilyMaxValue], 'FamilyUnit' as [FamilyUnit],
'parts' as [parts], 'partsMaxValue' as [partsMaxValue], 'partsUnit' as [partsUnit]
【问题讨论】:
-
在添加新列 SecondaryDisplayOrder 之后我做了什么
-
你能告诉我怎么做吗
-
我可以在不更改主临时表的情况下在 select @header 语句中执行此操作
-
源数据中必须有一些列提供所需的顺序或明确的规则来确定顺序。
-
提示:将对象名称组装成动态 SQL 语句时的最佳做法是使用
QuoteName()以避免出现奇怪名称的问题,例如New Table带有空格或保留字,例如From。QuoteName不仅仅在字符串周围添加方括号,它还处理字符串中出现的方括号。
标签: sql tsql stored-procedures sql-server-2012 dynamic-sql