我使用的软件没有自定义行号的功能。为了解决我的问题,我必须在我的SQL上调整它并为自定义行号创建自定义列。以下是我想要的自定义行号以及我的select语句:
li{
list-style-type: none;
}

<ul>
<li>1.</li>
<li>2.</li>
<li>2.1</li>
<li>2.2</li>
<li>2.3</li>
<li>3.</li>
<li>3.1</li>
<li>3.2</li>
</ul>
&#13;
我正在使用Microsoft SQL Server。我尝试使用变量,但它并没有按照我想要的方式工作。这是我的错误输出示例:
SELECT chart.col1,CASE
WHEN chart.CHART_LEVEL <= 2 THEN @no += 1
WHEN chart.CHART_LEVEL => 3 THEN CONCAT(@no,'.'@subNo += 1)
ELSE ''
END
AS 'RowNo'
FROM myTable chart
我真的很抱歉没有提供足够的细节。
答案 0 :(得分:0)
如果该表中有一个定义订单的列,则可以获取带有子查询的节号,并使用相应级别获取具有较低有序行的行数。
假设定义订单的列是id
,看起来像这样的东西可能就是你想要的。
SELECT col1,
convert(varchar(max), (SELECT count(*)
FROM myTable chart1
WHERE chart1.id <= chart.id
AND chart1.chart_level <= 2))
+
CASE
WHEN (SELECT count(*)
FROM myTable chart2
WHERE chart2.id <= chart.id
AND chart2.chart_level > 2
AND (SELECT count(*)
FROM myTable chart3
WHERE chart3.id <= chart.id
AND chart3.chart_level <= 2)
= (SELECT count(*)
FROM myTable chart4
WHERE chart4.id <= chart2.id
AND chart4.chart_level <= 2)) = 0
THEN ''
ELSE
'.' + convert(varchar(max), (SELECT count(*)
FROM myTable chart2
WHERE chart2.id <= chart.id
AND chart2.chart_level > 2
AND (SELECT count(*)
FROM myTable chart3
WHERE chart3.id <= chart.id
AND chart3.chart_level <= 2)
= (SELECT count(*)
FROM myTable chart4
WHERE chart4.id <= chart2.id
AND chart4.chart_level <= 2)))
END RowNo
FROM myTable chart;