sql-server - 使用 SELECT 语句为变量分配多个值并使 SQL 查询动态工作
问题描述
我有以下静态查询来在 SQL Server 中创建数据透视表:
SELECT
item,
[2018-05]=CEILING(SUM(CASE WHEN New_Date = '2018-05' THEN Qty Else NULL END)),
[2018-06]=CEILING(SUM(CASE WHEN New_Date = '2018-06' THEN Qty Else NULL END)),
[2018-07]=CEILING(SUM(CASE WHEN New_Date = '2018-07' THEN Qty Else NULL END)),
[2018-08]=CEILING(SUM(CASE WHEN New_Date = '2018-08' THEN Qty Else NULL END)),
[2018-09]=CEILING(SUM(CASE WHEN New_Date = '2018-09' THEN Qty Else NULL END)),
[2018-10]=CEILING(SUM(CASE WHEN New_Date = '2018-10' THEN Qty Else NULL END)),
[2018-11]=CEILING(SUM(CASE WHEN New_Date = '2018-11' THEN Qty Else NULL END)),
[2018-12]=CEILING(SUM(CASE WHEN New_Date = '2018-12' THEN Qty Else NULL END)),
[2019-01]=CEILING(SUM(CASE WHEN New_Date = '2019-01' THEN Qty Else NULL END)),
[2019-02]=CEILING(SUM(CASE WHEN New_Date = '2019-02' THEN Qty Else NULL END)),
[2019-03]=CEILING(SUM(CASE WHEN New_Date = '2019-03' THEN Qty Else NULL END)),
[2019-04]=CEILING(SUM(CASE WHEN New_Date = '2019-04' THEN Qty Else NULL END)),
[2019-05]=CEILING(SUM(CASE WHEN New_Date = '2019-05' THEN Qty Else NULL END)),
[2019-06]=CEILING(SUM(CASE WHEN New_Date = '2019-06' THEN Qty Else NULL END)),
[2019-07]=CEILING(SUM(CASE WHEN New_Date = '2019-07' THEN Qty Else NULL END)),
[2019-08]=CEILING(SUM(CASE WHEN New_Date = '2019-08' THEN Qty Else NULL END)),
[2019-09]=CEILING(SUM(CASE WHEN New_Date = '2019-09' THEN Qty Else NULL END)),
[2019-10]=CEILING(SUM(CASE WHEN New_Date = '2019-10' THEN Qty Else NULL END)),
[2019-11]=CEILING(SUM(CASE WHEN New_Date = '2019-11' THEN Qty Else NULL END)),
[2019-12]=CEILING(SUM(CASE WHEN New_Date = '2019-12' THEN Qty Else NULL END)),
[2020-01]=CEILING(SUM(CASE WHEN New_Date = '2020-01' THEN Qty Else NULL END)),
[2020-02]=CEILING(SUM(CASE WHEN New_Date = '2020-02' THEN Qty Else NULL END))
FROM dbo.A
GROUP BY item
ORDER BY item;
但是,由于年月列太多,我想让它动态使用类似于以下代码的变量,并从“New_Date”col 获取所有不同的年月值并将它们分配给变量“piv_col” :
DECLARE @piv_col NVARCHAR (250)
SELECT DISTINCT @piv_col= New_Date FROM dbo.A
但是,@piv_col 仅采用 col 的最后一个值。您能否帮助我如何将所有不同的值分配给变量并使用该变量而不是年月列([2018-05]、[2018-06] 等)来使查询动态工作?
感谢您的帮助!
解决方案
推荐阅读
- amazon-web-services - 如果我删除将项目移至 Glacier 的 S3 生命周期规则,是否会立即将所有 Glacier 项目移出 Glacier?
- node.js - x-www-form-urlencoded 格式 - 在 node.js 中使用 https
- python - 用另一列值的子字符串替换一列的空值
- ios - 在 SwiftUI 中关闭工作表时如何从另一个 viewModel 调用方法?
- django - 如何将对象列表序列化为主键的项目列表
- excel - 在尝试合并两个矩阵时,我遇到了一个 ref 错误。关于如何解决这个问题的任何想法?
- python - Python 或 PETL 解析 XML
- c++ - 从 Debian 10 升级到 11 后,g++ 无法再链接到 lib-SDL2
- flutter - 容器内的图像不完全适合
- azure-data-explorer - Azure 数据资源管理器:数据加载性能