数据透视中的子查询 table
Subquery in pivot table
我正在使用动态数据透视查询生成报告:
DECLARE @Columns VARCHAR(MAX)
DECLARE @Columns2 VARCHAR(MAX)
SET @Columns = ''
SET @Columns2 = ''
SELECT
@Columns = @Columns + (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',')
FROM
efoxsfc.dbo.FTX_FA_Calender
WHERE
1=1
AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0))
AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
SET @Columns = LEFT(@Columns, LEN(@Columns) - 1)
SELECT
@Columns2 = @Columns2 + 'ISNULL(' +(QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',0)AS'+(QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') )
FROM
efoxsfc.dbo.FTX_FA_Calender
WHERE
1=1
AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0))
AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
SET @Columns2 = LEFT(@Columns2, LEN(@Columns2) - 1)
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = ''
SET @SQL = 'WITH BaseData AS
(
select
vendor_code,
RTRIM(LTRIM(cast(datename(month, [CLOSED_DATE]) as char(15))))+'','' + RTRIM(LTRIM(cast(year([CLOSED_DATE]) as char(20)))) as [CLOSED_DATE],
count(vendor_code) as [No. of Case]
from #teamp t WITH (NOLOCK)
where
[CLOSED_DATE] is not null
group by
vendor_code, CLOSED_DATE
)
SELECT vendor_code,' + @Columns2 + 'FROM BaseData
PIVOT
(
sum([No. of Case])
FOR CLOSED_DATE IN (' + @Columns + ')
) AS PivotTable'
--Print @SQL
EXECUTE sp_executesql @SQL
现在我想在我的 report.Vendor 名称中添加供应商名称和供应商代码,用于不同的 table
SELECT VendorName
FROM VENDOR_REQUIREMENT
WHERE vendorcode = 'ACEA'
请告诉我在哪里必须使用我的 select 来获取供应商名称!
请查找示例数据
提前致谢
只需加入您的 BaseData cte 中的 vendor_requirement table 和 select 需要的供应商名称。您还需要按进行计数的新字段进行分组()
SET @SQL = 'WITH BaseData AS
(
select
t.vendor_code,
vr.vendorname,
RTRIM(LTRIM(cast(datename(month, [CLOSED_DATE]) as char(15))))+'','' + RTRIM(LTRIM(cast(year([CLOSED_DATE]) as char(20)))) as [CLOSED_DATE],
count(t.vendor_code) as [No. of Case]
from #teamp t WITH (NOLOCK)
join (select distinct vendorcode, vendorname from vendor_requirement) vr on t.vendor_code = vr.vendorcode
where
[CLOSED_DATE] is not null
group by
t.vendor_code, vr.vendorname, CLOSED_DATE
)
SELECT vendor_code,vendorname,' + @Columns2 + 'FROM BaseData
PIVOT
(
sum([No. of Case])
FOR CLOSED_DATE IN (' + @Columns + ')
) AS PivotTable'
--Print @SQL
EXECUTE sp_executesql @SQL
不确定#teamp table 的来源。加入 table 应该可以。
来自#teamp t WITH (NOLOCK) INNER JOIN VENDOR_REQUIREMENT V ON T.vendor_code=V.vendor_code
我正在使用动态数据透视查询生成报告:
DECLARE @Columns VARCHAR(MAX)
DECLARE @Columns2 VARCHAR(MAX)
SET @Columns = ''
SET @Columns2 = ''
SELECT
@Columns = @Columns + (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',')
FROM
efoxsfc.dbo.FTX_FA_Calender
WHERE
1=1
AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0))
AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
SET @Columns = LEFT(@Columns, LEN(@Columns) - 1)
SELECT
@Columns2 = @Columns2 + 'ISNULL(' +(QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',0)AS'+(QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') )
FROM
efoxsfc.dbo.FTX_FA_Calender
WHERE
1=1
AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0))
AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
SET @Columns2 = LEFT(@Columns2, LEN(@Columns2) - 1)
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = ''
SET @SQL = 'WITH BaseData AS
(
select
vendor_code,
RTRIM(LTRIM(cast(datename(month, [CLOSED_DATE]) as char(15))))+'','' + RTRIM(LTRIM(cast(year([CLOSED_DATE]) as char(20)))) as [CLOSED_DATE],
count(vendor_code) as [No. of Case]
from #teamp t WITH (NOLOCK)
where
[CLOSED_DATE] is not null
group by
vendor_code, CLOSED_DATE
)
SELECT vendor_code,' + @Columns2 + 'FROM BaseData
PIVOT
(
sum([No. of Case])
FOR CLOSED_DATE IN (' + @Columns + ')
) AS PivotTable'
--Print @SQL
EXECUTE sp_executesql @SQL
现在我想在我的 report.Vendor 名称中添加供应商名称和供应商代码,用于不同的 table
SELECT VendorName
FROM VENDOR_REQUIREMENT
WHERE vendorcode = 'ACEA'
请告诉我在哪里必须使用我的 select 来获取供应商名称!
请查找示例数据
提前致谢
只需加入您的 BaseData cte 中的 vendor_requirement table 和 select 需要的供应商名称。您还需要按进行计数的新字段进行分组()
SET @SQL = 'WITH BaseData AS
(
select
t.vendor_code,
vr.vendorname,
RTRIM(LTRIM(cast(datename(month, [CLOSED_DATE]) as char(15))))+'','' + RTRIM(LTRIM(cast(year([CLOSED_DATE]) as char(20)))) as [CLOSED_DATE],
count(t.vendor_code) as [No. of Case]
from #teamp t WITH (NOLOCK)
join (select distinct vendorcode, vendorname from vendor_requirement) vr on t.vendor_code = vr.vendorcode
where
[CLOSED_DATE] is not null
group by
t.vendor_code, vr.vendorname, CLOSED_DATE
)
SELECT vendor_code,vendorname,' + @Columns2 + 'FROM BaseData
PIVOT
(
sum([No. of Case])
FOR CLOSED_DATE IN (' + @Columns + ')
) AS PivotTable'
--Print @SQL
EXECUTE sp_executesql @SQL
不确定#teamp table 的来源。加入 table 应该可以。
来自#teamp t WITH (NOLOCK) INNER JOIN VENDOR_REQUIREMENT V ON T.vendor_code=V.vendor_code