Sql 创建动态数组

Sql 创建动态数组,sql,.net,sql-server,stored-procedures,Sql,.net,Sql Server,Stored Procedures,我有一个表名Tankdet,它有两列TCO和Tanks 以下是用于返回租用、拥有和主要储罐计数的存储过程代码: ALTER PROCEDURE [dbo].[sp_Dash_LeaseInformation] AS BEGIN DECLARE @leased INT DECLARE @owned INT DECLARE @principal INT SET NOCOUNT ON SET @owned = (SELECT COUNT(*) FROM Tan

我有一个表名
Tankdet
,它有两列
TCO
Tanks

以下是用于返回租用、拥有和主要储罐计数的存储过程代码:

ALTER PROCEDURE [dbo].[sp_Dash_LeaseInformation]  
AS  
BEGIN  
 DECLARE @leased INT  
 DECLARE @owned INT
 DECLARE @principal INT
  
 SET NOCOUNT ON  
  
 SET @owned = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='owned')  
 SET @leased = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='leased')   
 SET @principal = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='principle') 
 SELECT [Leased]=@leased,[Owned]=@owned,[Principal]=@principal 
  
    SET NOCOUNT OFF  
END  
这张桌子看起来像这样

它返回的值如下:

leased = 4,owned = 4,principle = 7
用于在我的前端显示油箱计数的值

这里的问题是,我显示了主坦克的全部计数,并将其返回到前端

现在,我在创建数组时遇到了一个问题,即对于每个
TCO
,将
主油箱
计数为单独的,我必须将其返回为:

SELECT [Leased]=@leased, [Owned]=@owned, [vibe]=@vibe, [baru]=@baru,[sarath]=@sarath, [karthi]=@karthi, [nth...]=@nth.....
之所以选择第n个,是因为将来可能会添加TCO值,并且所选的值必须返回如下所示:

租赁=4,拥有=4,振动=2,巴鲁=3,萨拉特=1,卡蒂=1,n=n

表(和结果集)的列数固定,行数可变。所以干脆回来吧

SELECT ownleasetank, COUNT(*) TankCount
FROM Tankdet 
GROUP BY ownleasetank

这将为每个
ownleasetank
值返回一行以及计数。

似乎您真正想要的是一个动态轴心。另请注意,
sp
前缀由Microsoft保留,意味着特殊过程。不应将其用作用户对象的前缀。我还删除了标记,因为这显然是SQL Server(由于
dbo
schema)。在提问时,请不要随意标记其他RDBMS。@Larnu是的,我正在寻找dynamic pivot您是否有任何示例来解决此问题此网站上有100个: