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个: