我刚开始学习T-SQL,任何人都可以指出哪里错了?任何帮助将不胜感激!
问题:
AdventureWorksLT
数据库包含一个名为dbo.ufnGetAllCategories
的表值函数,它返回一个产品类别表(例如'Road Bikes')和父类别(例如'Bikes')。
说明:
编写一个使用此函数的查询,以返回所有产品的列表,包括其父类别和自己的类别。确保使用提供的别名和其他地方的默认列名。
我的尝试:
CREATE FUNCTION dbo.ufnGetAllCategories(@ProductCategoryID AS Integer);
RETURNS TABLE
AS
RETURN
(SELECT C.ParentProductCategoryName AS ParentCategory,
C.ProductCategoryName AS Category,
P.ProductID, P.Name AS ProductName
FROM SalesLT.Product AS P JOIN SalesLT.ProductCategory AS C
ON P.ProductCategoryID = C.ProductCategoryID
JOIN dbo.ufnGetAllCategories() AS f
ON P.ProductCategoryID = f.ProductCategoryID
ORDER BY ParentCategory, Category, ProductName);
我的输出:
提交不正确
解决方案中的列ParentCategory没有结果中具有相同名称和值的列。
答案 0 :(得分:0)
我相信你在解决这一挑战方面非常接近。该函数是一个表值函数。
select *
from [dbo].[ufnGetAllCategories]()
并输出如下所示的输出。
所以你可以使用dbo.ufnGetAllCategories()作为普通表。
select C.ParentProductCategoryName as ParentCategory
, C.ProductCategoryName as Category
, P.ProductID
, P.Name as ProductName
from SalesLT.Product as P
join dbo.ufnGetAllCategories() as C on P.ProductCategoryID = C.ProductCategoryID
order by ParentCategory, Category, ProductName;
导致: