数据表结构;
tblcompany:
companyid title
1 公司1
2 公司2
3 公司3tblproduct:
productid title companyid
1 公司1的产品1 1
2 公司1的产品2 1
3 公司2的产品1 2
4 公司2的产品2 2
5 公司2的产品3 2
6 公司3的产品1 3
7 公司3的产品2 3我想要的结果是:
每个公司的产品不要在一起
查询出来的结果如下:productid title companyid
1 公司1的产品1 1
3 公司2的产品1 2
6 公司3的产品1 3
2 公司1的产品2 1
4 公司2的产品2 2
7 公司3的产品2 3
5 公司2的产品3 2谢谢各位!
tblcompany:
companyid title
1 公司1
2 公司2
3 公司3tblproduct:
productid title companyid
1 公司1的产品1 1
2 公司1的产品2 1
3 公司2的产品1 2
4 公司2的产品2 2
5 公司2的产品3 2
6 公司3的产品1 3
7 公司3的产品2 3我想要的结果是:
每个公司的产品不要在一起
查询出来的结果如下:productid title companyid
1 公司1的产品1 1
3 公司2的产品1 2
6 公司3的产品1 3
2 公司1的产品2 1
4 公司2的产品2 2
7 公司3的产品2 3
5 公司2的产品3 2谢谢各位!
order by REVERSE(title)
order by REVERSE(title),companyid也是可以的
order by case when exists(select 1 from @tblproduct
where companyid=a.companyid and a.productid>productid)
then a.productid*POWER(10,8)+a.companyid else a.companyid end
(productid Int,
title Nvarchar(100),
companyid Int)
Insert tblproduct Select 1, N'公司1的产品1', 1
Union All Select 2, N'公司1的产品1', 1
Union All Select 3, N'公司2的产品1', 2
Union All Select 4, N'公司2的产品2', 2
Union All Select 5, N'公司2的产品3', 2
Union All Select 6, N'公司3的产品1', 3
Union All Select 7, N'公司3的产品2', 3
GO
--方法一
Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid)
--方法二
Select B.productid,title,companyid From
(Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
Order By ID
GO
Drop Table tblproduct
--Result
/*
productid title companyid
1 公司1的产品1 1
3 公司2的产品1 2
6 公司3的产品1 3
7 公司3的产品2 3
4 公司2的产品2 2
2 公司1的产品2 1
5 公司2的产品3 2
*/
(productid Int,
title Nvarchar(100),
companyid Int)
Insert tblproduct Select 1, N'公司1的产品1', 1
Union All Select 2, N'公司1的产品1', 1
Union All Select 3, N'公司2的产品1', 2
Union All Select 4, N'公司2的产品2', 2
Union All Select 5, N'公司2的产品3', 2
Union All Select 6, N'公司3的产品1', 3
Union All Select 7, N'公司3的产品2', 3
GO
--方法一
Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),companyid
--方法二
Select B.productid,title,companyid From
(Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
Order By ID,companyid
GO
Drop Table tblproduct
--Result
/*
productid title companyid
1 公司1的产品1 1
3 公司2的产品1 2
6 公司3的产品1 3
7 公司3的产品2 3
4 公司2的产品2 2
2 公司1的产品2 1
5 公司2的产品3 2
*/
出來的結果
1
2
3
1
2
2
3
與樓主要的還是不一樣...
(productid Int,
title Nvarchar(100),
companyid Int)
Insert tblproduct Select 1, N'公司1的产品1', 1
Union All Select 2, N'公司1的产品2', 1
Union All Select 3, N'公司2的产品1', 2
Union All Select 4, N'公司2的产品2', 2
Union All Select 5, N'公司2的产品3', 2
Union All Select 6, N'公司3的产品1', 3
Union All Select 7, N'公司3的产品2', 3
GO
--方法一
Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),companyid
--方法二
Select B.productid,title,companyid From
(Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
Order By ID,companyid
GO
Drop Table tblproduct
--Result
/*
productid title companyid
1 公司1的产品1 1
3 公司2的产品1 2
6 公司3的产品1 3
2 公司1的产品2 1
4 公司2的产品2 2
7 公司3的产品2 3
5 公司2的产品3 2
*/
谢谢!