我有一个查询连接4个表
SELECT
a.Id AS KelompokInformasi, d.Name AS Domain, d.Id AS Dimension, e.Text AS Description FROM XBRLNamespaces a
INNER JOIN Hypercubes b
ON a.XBRLView_ViewId = b.XBRLView_ViewId
INNER JOIN HypercubeDimensionItems c
ON b.XBRLHypercubeId = c.XBRLHypercube_XBRLHypercubeId
INNER JOIN Items d
ON c.XBRLItem_ItemId = d.ItemId
INNER JOIN Labels e
ON d.ItemId = e.XBRLItem_ItemId
WHERE a.Id like '%AAKX%'
查询结果为
KelompokInformasi Domain Dimension Description
AAKX JWAAKT dim_JWAAKT Jangka Waktu Aset
AAKX KOKOLT dim_KOKOLT Kolektibilitas
AAKX SNOUPL dim_SNOUPL Status Operasional Usaha Pihak Lawan
AAKX是域名,维度和说明中其他数据的父级。
所以,我想更改查询,最后有一个输出查询结果如下:
KelompokInformasi Domain Dimension Description
AAKX NULL NULL NULL
NULL JWAAKT dim_JWAAKT Jangka Waktu Aset
NULL KOKOLT dim_KOKOLT Kolektibilitas
NULL SNOUPL dim_SNOUPL Status Operasional Usaha Pihak Lawan
答案 0 :(得分:0)
我认为你必须使用Group by with cube并拥有。或分组。
http://technet.microsoft.com/en-us/library/bb522495(v=SQL.105).aspx
答案 1 :(得分:0)
SELECT
'KelompokInformasi' =
CASE
WHEN a.Id like '%AAKX%' THEN a.Id
ELSE NULL
END,
'Domain' =
CASE
WHEN a.Id like '%AAKX%' THEN NULL
ELSE d.Name
END,
'Dimension' =
CASE
WHEN a.Id like '%AAKX%' THEN NULL
ELSE d.Id
END,
'Description' =
CASE
WHEN a.Id like '%AAKX%' THEN NULL
ELSE e.Text
END,
FROM XBRLNamespaces a
INNER JOIN Hypercubes b
ON a.XBRLView_ViewId = b.XBRLView_ViewId
INNER JOIN HypercubeDimensionItems c
ON b.XBRLHypercubeId = c.XBRLHypercube_XBRLHypercubeId
INNER JOIN Items d
ON c.XBRLItem_ItemId = d.ItemId
INNER JOIN Labels e
ON d.ItemId = e.XBRLItem_ItemId
WHERE a.Id like '%AAKX%'
答案 2 :(得分:0)
您可以使用上面使用的公用表表达式(CTE),ROW_NUMBER()和Same Case语句:
WITH cte AS
选择
a.Id AS KelompokInformasi,d。Name AS DOMAIN,d.Id AS Dimension,e.Text AS Description,
ROW_NUMBER()OVER(由a.Id ORDER by a.ID分区)AS COL5
FROM XBRLNamespaces a
INNER JOIN超立方体b
在a.XBRLView_ViewId = b.XBRLView_ViewId
INNER JOIN HypercubeDimensionItems c
ON b.XBRLHypercubeId = c.XBRLHypercube_XBRLHypercubeId
内部联接项目d
ON c.XBRLItem_ItemId = d.ItemId
INNER JOIN标签e
ON d.ItemId = e.XBRLItem_ItemId
在哪里...我喜欢'%AAKX%')
选择 CASE
当COL5> 1那么空的时候KelompokInformasi结束为KelompokInformasi,
的 CASE 强>
当COL5 = 1时,那么将ELSE DOMAIN结束为域,
的 CASE 强>
当COL5 = 1 THEN NULL ELSE Dimension END AS尺寸,
的 CASE 强>
当COL5 = 1 THEN NULL ELSE描述END AS描述
来自 cte