首先你有正确的设计模式,我认为这可能帮助你
IF OBJECT_ID('dbo.category') IS NOT NULL
DROP TABLE category
CREATE TABLE category (
categoryID INT Identity PRIMARY KEY
,categoryName VARCHAR(200)
)
INSERT INTO category(categoryName)
SELECT 'fruits' Union all
SELECT 'vegetables'Union all
SELECT 'animals'
SELECT * from category
IF OBJECT_ID('dbo.Datacategory') IS NOT NULL
Drop Table Datacategory
CREATE TABLE Datacategory (
DatacategoryID INT Identity
,categoryID INT CONSTRAINT FK_Datacategory_category FOREIGN KEY REFERENCES category(categoryID)
,Data VARCHAR(200)
)
INSERT INTO Datacategory(Data,categoryID)
SELECT 'apple' ,1 Union all
SELECT 'spinach' ,2 Union all
SELECT 'mango' ,1 Union all
SELECT 'lion' ,3 Union all
SELECT 'grapes' ,1 Union all
SELECT 'tiger' ,3 Union all
SELECT 'potato' ,2
查询以获得期望的结果
SELECT ISNULL(CAST(NULLIF(CASE
WHEN RNo = 1
THEN categoryID
ELSE ''
END, '') AS VARCHAR), '') AS categoryID
,Data
FROM (
SELECT D.categoryID
,D.Data
,ROW_NUMBER() OVER (
PARTITION BY D.categoryID ORDER BY D.categoryID
) AS Rno
FROM Datacategory d
INNER JOIN category c ON c.categoryID = d.categoryID
) Dt
ORDER BY Dt.categoryID
输出
categoryID Data
----------------
1 apple
mango
grapes
2 potato
spinach
3 lion
tiger
我不明白这一点。你想要什么?我没有看到数据和类别之间的关系 – Arion