如何将列值转换为多列?
How can I pivot column values into multiple columns?
我正在尝试将一列的值转换为多列。这是来自以下 AX table 的示例:
AAAREFNUMVALUE AAATRANSPORTTABLE AAAREFNUMTYPE
5000130742 5637146247 2
01832007 5637146247 3
14252108 5637146247 1
NS 5637146247 8
5000131013 5637146248 2
01829347 5637146248 3
11910275 5637146248 1
NS 5637146248 8
下面是我需要使用 SQL 的 excel 报告的最终结果。它在同一行上具有所有相关字段。 AAATRANSPORTTABLE 字段与值相关,而 AAAREFNUMTYPE 是我希望新列的排列方式:
Alpha Pro Number Shippers BL # PO Number Shippers Number
11910275 SA03261264 01829347 NS
14252108 SA03256804 01832007 NS
我尝试使用多个 SELECT 语句来过滤数据,但是我收到以下错误:
Subquery returned more than 1 value. This is not permitted when the
subquery follows =, !=, <, <= , >, >= or when the subquery is used as
an expression.
我已经考虑过 PIVOT 和 MERGE 函数,尽管我很难想象如何解决这个问题。我提供的数据是问题的简化版本,但任何方向都将不胜感激。
SELECT AAAREFNUMVALUE AS 'Alpha Pro Number',
AAATRANSPORTTABLE AS 'Table ID',
AAAREFNUMTYPE AS 'Number Type',
(SELECT AAAREFNUMTYPE
FROM dbo.AAATOREFNUMS
WHERE AAAREFNUMTYPE = 2) AS 'Shippers BL#'
FROM dbo.AAATOREFNUMS
WHERE (AAAREFNUMTYPE = 1)
您可以使用子查询执行此操作,但它需要关联:
SELECT a.AAAREFNUMVALUE AS "Alpha Pro Number",
a.AAATRANSPORTTABLE AS "Table ID",
a.AAAREFNUMTYPE AS "Number Type",
(SELECT a2.AAAREFNUMTYPE
FROM dbo.AAATOREFNUMS a2
WHERE a2.AAATRANSPORTTABLE = a.AAATRANSPORTTABLE AND
a2.AAAREFNUMTYPE = 2
) AS "Shippers BL#"
FROM dbo.AAATOREFNUMS a
WHERE AAAREFNUMTYPE = 1 ;
我强烈建议您不要使用单引号来引用标识符。单引号应该只用于字符串和日期常量。我将它们更改为适用于大多数数据库的双引号。
我正在尝试将一列的值转换为多列。这是来自以下 AX table 的示例:
AAAREFNUMVALUE AAATRANSPORTTABLE AAAREFNUMTYPE
5000130742 5637146247 2
01832007 5637146247 3
14252108 5637146247 1
NS 5637146247 8
5000131013 5637146248 2
01829347 5637146248 3
11910275 5637146248 1
NS 5637146248 8
下面是我需要使用 SQL 的 excel 报告的最终结果。它在同一行上具有所有相关字段。 AAATRANSPORTTABLE 字段与值相关,而 AAAREFNUMTYPE 是我希望新列的排列方式:
Alpha Pro Number Shippers BL # PO Number Shippers Number
11910275 SA03261264 01829347 NS
14252108 SA03256804 01832007 NS
我尝试使用多个 SELECT 语句来过滤数据,但是我收到以下错误:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我已经考虑过 PIVOT 和 MERGE 函数,尽管我很难想象如何解决这个问题。我提供的数据是问题的简化版本,但任何方向都将不胜感激。
SELECT AAAREFNUMVALUE AS 'Alpha Pro Number',
AAATRANSPORTTABLE AS 'Table ID',
AAAREFNUMTYPE AS 'Number Type',
(SELECT AAAREFNUMTYPE
FROM dbo.AAATOREFNUMS
WHERE AAAREFNUMTYPE = 2) AS 'Shippers BL#'
FROM dbo.AAATOREFNUMS
WHERE (AAAREFNUMTYPE = 1)
您可以使用子查询执行此操作,但它需要关联:
SELECT a.AAAREFNUMVALUE AS "Alpha Pro Number",
a.AAATRANSPORTTABLE AS "Table ID",
a.AAAREFNUMTYPE AS "Number Type",
(SELECT a2.AAAREFNUMTYPE
FROM dbo.AAATOREFNUMS a2
WHERE a2.AAATRANSPORTTABLE = a.AAATRANSPORTTABLE AND
a2.AAAREFNUMTYPE = 2
) AS "Shippers BL#"
FROM dbo.AAATOREFNUMS a
WHERE AAAREFNUMTYPE = 1 ;
我强烈建议您不要使用单引号来引用标识符。单引号应该只用于字符串和日期常量。我将它们更改为适用于大多数数据库的双引号。