如何将单位显示为同一显示顺序的第二个显示项?

txu3uszq  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(475)

我在SQLServer2012上工作,我面临一个问题:我不能将包含单元的功能安排为同一显示顺序的第二项显示。
以特征族为例

  1. 'Family' as [Family], 'FamilyMaxValue' as [FamilyMaxValue], 'FamilyUnit' as [FamilyUnit]

我需要它如下

  1. 'Family' as [Family], 'FamilyUnit' as [FamilyUnit],'FamilyMaxValue' as [FamilyMaxValue]

功能和单位和最大值得到相同的显示顺序,但我的问题
如何获得单位作为第二显示相同的显示顺序。
意思改变将是以逗号分隔的项目顺序,以显示特征单元作为同一显示顺序的第二个显示。

  1. create table #SplitNumberAndUnitsFinal
  2. (
  3. DKFeatureName nvarchar(100),
  4. DisplayOrder int
  5. )
  6. insert into #SplitNumberAndUnitsFinal (DKFeatureName,DisplayOrder)
  7. values
  8. ('package',1),
  9. ('packageUnit',1),
  10. ('Family',2),
  11. ('FamilyMaxValue',2),
  12. ('FamilyUnit',2),
  13. ('parts',3),
  14. ('partsMaxValue',3),
  15. ('partsUnit',3)
  16. DECLARE @Header nvarchar(max)=( select
  17. substring(
  18. (
  19. Select ', '''+ DKFeatureName +''' as ['+ DKFeatureName +']' AS [text()]
  20. From #SplitNumberAndUnitsFinal
  21. GROUP BY DKFeatureName
  22. ORDER BY MIN(DisplayOrder)
  23. --order by DisplayOrder
  24. For XML PATH ('')
  25. ), 2, 10000) [Columns])
  26. print @Header

预期结果将特征单元排列为第二个显示,如下所示:

  1. Feature,FeatureUnit,FeatureMaxValue according to same display Order
  2. 'package' as [package], 'packageUnit' as [packageUnit],
  3. 'Family' as [Family], 'FamilyUnit' as [FamilyUnit],'FamilyMaxValue' as [FamilyMaxValue],
  4. 'parts' as [parts], 'partsUnit' as [partsUnit],'partsMaxValue' as [partsMaxValue]

我不需要显示如下:

  1. Feature,FeatureMaxValue,FeatureUnit for same Display Order
  2. 'package' as [package], 'packageUnit' as [packageUnit],
  3. 'Family' as [Family], 'FamilyMaxValue' as [FamilyMaxValue], 'FamilyUnit' as [FamilyUnit],
  4. 'parts' as [parts], 'partsMaxValue' as [partsMaxValue], 'partsUnit' as [partsUnit]
lo8azlld

lo8azlld1#

如果需要,则需要一个附加列来控制显示顺序 DisplayOrder 孤独不是唯一的。这将允许您在 ORDER BY 所需订单的条款:

  1. CREATE TABLE #SplitNumberAndUnitsFinal
  2. (
  3. DKFeatureName nvarchar(100),
  4. DisplayOrder int,
  5. SecondaryDisplayOrder int
  6. );
  7. INSERT INTO #SplitNumberAndUnitsFinal (DKFeatureName,DisplayOrder,SecondaryDisplayOrder)
  8. VALUES
  9. ('package',1,1),
  10. ('packageUnit',1,2),
  11. ('Family',2,1),
  12. ('FamilyMaxValue',2,3),
  13. ('FamilyUnit',2,2),
  14. ('parts',3,1),
  15. ('partsMaxValue',3,2),
  16. ('partsUnit',3,3)
  17. DECLARE @Header nvarchar(MAX)=( select
  18. SUBSTRING(
  19. (
  20. SELECT ', '''+ DKFeatureName +''' as ['+ DKFeatureName +']' AS [text()]
  21. FROM #SplitNumberAndUnitsFinal
  22. ORDER BY DisplayOrder,SecondaryDisplayOrder
  23. FOR XML PATH ('')
  24. ), 2, 10000) [Columns]);
  25. PRINT @Header;
展开查看全部

相关问题