我有一个数据库表,包含以下数据
Id Level parentId Name
1 1 0 ĐẤT NÔNG NGHIỆP
2 1 0 ĐẤT PHI NÔNG NGHIỆP
3 1 0 ĐẤT CHƯA SỬ DỤNG
4 2 1 Đất sản xuất nông nghiệp
5 2 1 Đất lâm nghiệp
6 2 1 Đất nuôi trồng thủy sản
7 2 1 Đất nông nghiệp khác
8 2 2 Đất ở (nông thôn / đô thị)
9 2 2 Đất chuyên dùng
10 2 2 Đất sông, ngòi, kênh, rạch, suối và mặt nước chuyên dùng
11 2 2 Đất phi NN khác
12 2 3 Đất chưa xác định mục đích sử dụng
...
我想写一个查询来获取如下数据:
如你所见,我有6个等级。我想得到所有数据,如上面的序列,但所有数据都是同一列。 我尝试搜索并找到了解决方案:[Parent/Child hierarchy tree view 但是我很抱歉,因为我对此并不了解。 我尝试改为:
WITH relation(Id, IdCha, TenMucDichSuDung, [level], [orderSequence])
AS
(
SELECT Id,
IdCha,
TenMucDichSuDung,
0,
CAST(Id AS VARCHAR(20))
FROM NhomMucDichSuDungDat
WHERE IdCha = 0
UNION ALL
SELECT p.Id,
p.IdCha,
r.[level] + 1,
CAST(
r.orderSequence + '_' + CAST(p.Id AS VARCHAR) AS VARCHAR(20)
)
FROM NhomMucDichSuDungDat p
INNER JOIN relation r
ON p.IdCha = r.Id
)
SELECT RIGHT('----------', ([level] * 3)) + TenMucDichSuDung
FROM relation
ORDER BY
orderSequence
但是我收到了一个错误:
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询都必须 在目标列表中有相同数量的表达式。
每个人都可以帮我这么做吗?
答案 0 :(得分:0)
当我计算联合查询的列数时,我看到第一个查询返回五列,第二个查询返回四列。这是不允许的。联合查询必须具有相同数量的列,并且数据类型必须兼容。
请参阅:msdn.microsoft.com/de-de/library/ms180026(v=sql.110).aspx