SQL语句从另一个视图中的表返回数据
SQL语句如何从上表返回底部结果 钥匙上的最后一个字母应该去掉。它代表语言SQL语句从另一个视图中的表返回数据,sql,select,ms-access-2010,Sql,Select,Ms Access 2010,SQL语句如何从上表返回底部结果 钥匙上的最后一个字母应该去掉。它代表语言EXP列应拆分为5列,并带有语言前缀和正确的值 我在编写或多或少困难的SQL语句方面很弱,因此,如果有任何帮助,我将不胜感激 试试这样的方法: select * from ( select 'abcd' as [key], right([key], 1) as id, expression from table1 ) x pivot ( max(expression) for id in
EXP
列应拆分为5列,并带有语言前缀和正确的值
我在编写或多或少困难的SQL语句方面很弱,因此,如果有任何帮助,我将不胜感激 试试这样的方法:
select *
from
(
select 'abcd' as [key], right([key], 1) as id, expression
from table1
) x
pivot
(
max(expression)
for id in ([D], [E])
) p
试试这样的方法:
select *
from
(
select 'abcd' as [key], right([key], 1) as id, expression
from table1
) x
pivot
(
max(expression)
for id in ([D], [E])
) p
Microsoft Access相当于SQL Server中的枢轴,称为交叉表。以下查询适用于Microsoft Access 2010
TRANSFORM First(table1.Exp) AS FirstOfEXP
SELECT Left([KEY],Len([KEY])-2) AS [XKEY]
FROM table1
GROUP BY Left([KEY],Len([KEY])-2)
PIVOT Right([KEY],1);
如果试图用KEY命名行标题,Access将抛出循环字段引用错误,因为这也是从中派生行标题的原始表字段的名称。如果不希望使用XKEY作为字段名,则需要将上述查询拆分为两个单独的查询,如下所示:
qsel_表1:
选择Left([KEY],Len([KEY])-2)作为XKEY
,右([键],1)为[语言]
,表1.Exp
来自表1
按左([键]、长([键])-2)、右([键]、1)排序
qsel\u表1\u交叉表:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
为了始终输出所有语言列,而不管是否有值,您需要将这些值添加到单独的表中。然后,该表将为交叉表提供行和列值,原始表将提供值表达式。使用上述两个查询解决方案,我们需要执行以下操作:
表2:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
这是一个新表,包含一个BASE_KEY TEXT*255列和一个LANG TEXT*1列。这两列将一起定义主键。使用以下行填充此表:
AbstractItemNumberReportController。选择Positionen和D
AbstractItemNumberReportController。选择Positionen和E
AbstractItemNumberReportController。选择Positionen和F
AbstractItemNumberReportController。选择Positionen和I
AbstractItemNumberReportController。选择Positionen和X
qsel_表1:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
此查询保持不变
qsel\u表1\u交叉表:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
新表2通过与原始表1的外部联接添加到此查询中。外部联接将允许从表2中返回所有行,而不管表1中是否有匹配的行。表2现在提供了行标题和列标题的值
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT Table2.Base_KEY AS [KEY]
FROM Table2 LEFT JOIN qsel_table1 ON (Table2.BASE_KEY = qsel_table1.XKEY)
AND (Table2.LANG = qsel_table1.Language)
GROUP BY Table2.Base_KEY
PIVOT Table2.LANG;
Microsoft Access相当于SQL Server中的PIVOT,称为交叉表。以下查询适用于Microsoft Access 2010
TRANSFORM First(table1.Exp) AS FirstOfEXP
SELECT Left([KEY],Len([KEY])-2) AS [XKEY]
FROM table1
GROUP BY Left([KEY],Len([KEY])-2)
PIVOT Right([KEY],1);
如果试图用KEY命名行标题,Access将抛出循环字段引用错误,因为这也是从中派生行标题的原始表字段的名称。如果不希望使用XKEY作为字段名,则需要将上述查询拆分为两个单独的查询,如下所示:
qsel_表1:
选择Left([KEY],Len([KEY])-2)作为XKEY
,右([键],1)为[语言]
,表1.Exp
来自表1
按左([键]、长([键])-2)、右([键]、1)排序
qsel\u表1\u交叉表:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
为了始终输出所有语言列,而不管是否有值,您需要将这些值添加到单独的表中。然后,该表将为交叉表提供行和列值,原始表将提供值表达式。使用上述两个查询解决方案,我们需要执行以下操作:
表2:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
这是一个新表,包含一个BASE_KEY TEXT*255列和一个LANG TEXT*1列。这两列将一起定义主键。使用以下行填充此表:
AbstractItemNumberReportController。选择Positionen和D
AbstractItemNumberReportController。选择Positionen和E
AbstractItemNumberReportController。选择Positionen和F
AbstractItemNumberReportController。选择Positionen和I
AbstractItemNumberReportController。选择Positionen和X
qsel_表1:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
此查询保持不变
qsel\u表1\u交叉表:
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT qsel_table1.XKEY AS [KEY]
FROM qsel_table1
GROUP BY qsel_table1.XKEY
PIVOT qsel_table1.Language;
新表2通过与原始表1的外部联接添加到此查询中。外部联接将允许从表2中返回所有行,而不管表1中是否有匹配的行。表2现在提供了行标题和列标题的值
TRANSFORM First(qsel_table1.Exp) AS FirstOfEXP
SELECT Table2.Base_KEY AS [KEY]
FROM Table2 LEFT JOIN qsel_table1 ON (Table2.BASE_KEY = qsel_table1.XKEY)
AND (Table2.LANG = qsel_table1.Language)
GROUP BY Table2.Base_KEY
PIVOT Table2.LANG;
谢谢,这适用于MS T-Sql:),但我需要它用于MS Access 2010 Sql。。。尝试该语句会出现语法错误请参阅此链接..谢谢,这适用于MS T-Sql:),但我需要用于MS Access 2010 Sql的语法错误。。。尝试该语句会出现语法错误。请参阅此链接。@GordThompson的可能重复项不是重复项。我尝试创建access sql来解决我的问题,现在已经有5个小时了。即使在链接的“帮助”下,我也无法解决它。@GordThompson的可能副本不是副本。我尝试创建access sql来解决我的问题,现在已经有5个小时了。即使有链接的“帮助”,我也无法解决它。非常感谢,它很有效。只有一件事我忘了提。有时缺少一种语言。但无论如何,应该返回该行。因此,如果在我开始的屏幕截图中缺少“意大利语”
Articolo scelto
(KEY和EXP),那么sql语句应该返回包含空单元格的行。所以它看起来像是:在答案中添加了关于您的附加规范的附加解释。非常感谢,它是有效的。只有一件事我忘了提。有时缺少一种语言。但无论如何,应该返回该行。因此,如果在我开始的屏幕截图中缺少“意大利语”Articolo scelto
(KEY和EXP),那么sql语句应该返回包含空单元格的行。s