SQL Server查询生成器错误?

jgok222

我有一个用SQL开发的查询,并且运行良好,但是当我将查询放在SQL Server(或.Net)查询生成器中时,它会建立错误的查询。这是一个例子,就像我写的查询

这就是我写的(并且有效)

Select Case when Table1.[Col 1] is null then Table2.[Col 1] Else Table1.[Col 1] END as 'col1' From 
(Select Sum(Table3.[Col 1]) as 'col 1', Table3.[groupby col] from Table3 Group by  Table3.[groupbycol]) as Table1 FULL OUTER JOIN (Select Sum(Table3.[Col 1]) as 'col 1', 'Total' as 'groupby col' from Table3) as Table2 ON Table1.[groupby col] = Table2.[groupby col]

但是,如果我在sql或asp.net查询构建器中打开此“改进”,它将使查询中断,现在看起来像这样

Select 
    Case 
       when Table1. 'Col 1' is null 
         then Table2. 'Col 1' 
         Else Table1. 'Col 1' 
    END as 'col1' 
From 
   (Select 
        Sum(Table3.[Col 1]) as 'col 1', 
        Table3.[groupby col] 
    from 
        Table3 
    group by  
        Table3.[groupbycol]) as Table1 
FULL OUTER JOIN 
   (Select 
        Sum(Table3.[Col 1]) as 'col 1', 
        'Total' as 'groupby col' 
    from Table3 as Table3_1) as Table2 ON Table1. 'groupby col' = Table2. 'groupby col'

它不再起作用,因为它将[]替换为',并在列名称前添加了一个空格,并在第二个查询中为表3创建了别名,然后在使用该表的其他时间不将该别名分配给其他人

任何人都知道是什么原因造成的,因为如果每次我打开查询构建器时,它都可能使查询混乱,这可能会很烦人

谢谢

加雷斯

作为列别名的字符串文字在SQL Server弃用列表中。尽管不是可移植的语法,但我一直是Alias = ExpressionSQL Server语法的忠实拥护者。亚伦·伯特兰德(Aaron Bertrand)在他的文章“踢坏习惯:用AS代替=代替列别名”中也有一个很好的例子

考虑到这一点,我将整个查询重写为:

SELECT  Col1 = ISNULL(table1.Col1, table2.Col1)
FROM    (   SELECT  Col1 = SUM(table3.[Col 1]),
                    GroupByCol = Table3.[groupby col]
            FROM    Table3
        ) table1
        FULL OUTER JOIN
        (   SELECT  Col1 = SUM(table3.[Col 1]),
                    GroupByCol = 'Total'
            FROM    Table3
        ) table2
            ON Table1.GroupByCol = Table2.GroupByCol;

或者

SELECT  ISNULL(table1.Col1, table2.Col1) AS Col1
FROM    (   SELECT  SUM(table3.[Col 1]) AS Col1,
                    Table3.[groupby col] AS GroupByCol
            FROM    Table3
        ) AS table1
        FULL OUTER JOIN
        (   SELECT  SUM(table3.[Col 1]) AS Col1,
                    'Total' AS GroupByCol
            FROM    Table3
        ) AS table2
            ON Table1.GroupByCol = Table2.GroupByCol;

我还怀疑您使用ROLLUP后实际上可以达到您想要的结果

SELECT  Col1 = SUM(table3.[Col 1]),
        GroupByCol = ISNULL(Table3.[groupby col], 'Total')
FROM    Table3  
GROUP BY Table3.[groupby col] 
WITH ROLLUP;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server/报表生成器子查询返回多于一行错误

来自分类Dev

Laravel 查询生成器中的 SQL 左连接错误

来自分类Dev

Sql 查询生成器 - Symfony

来自分类Dev

MySQL + SSRS(SQL Server报表生成器)数据集/查询参数不起作用

来自分类Dev

Codeigniter中的查询生成器生成正确的SQL语句,但是执行查询会导致错误的结果

来自分类Dev

Gii模型生成器错误-表不存在-Yii框架和SQL Server 2000

来自分类Dev

SQL Server 报表生成器 - TransactionDate 值错误地显示为大于 endDate 值

来自分类Dev

从Phalcon查询生成器获取原始SQL

来自分类Dev

Laravel 5查询生成器中存在SQL

来自分类Dev

Laravel 4查询生成器SQL语句

来自分类Dev

Laravel查询生成器-从传统SQL迁移

来自分类Dev

将此sql语句转换为ORM或查询生成器

来自分类Dev

转换原始SQL以使用口才查询生成器

来自分类Dev

主义查询生成器:SQL数组中的值

来自分类Dev

Sql 查询生成器将数据转换为字符

来自分类Dev

SQL 查询生成器 - 分组和排序 (Laravel)

来自分类Dev

查询在查询设计器中有效,但在MS SQL Server报表生成器中无效

来自分类Dev

SQL Server命令生成器和自动递增ID

来自分类Dev

SQL Server报表生成器字段格式

来自分类Dev

SQL Server命令生成器和自动递增ID

来自分类Dev

在cakephp3中打印ORM查询生成器的SQL查询

来自分类Dev

将原始SQL查询更改为Laravel查询生成器对象

来自分类Dev

我如何将SQL原始查询重写为Laravel查询生成器

来自分类Dev

Yii查询生成器结果(带有联接和子查询的纯SQL)

来自分类Dev

如何使用CakePHP查询生成器生成SQL函数调用?

来自分类Dev

SQL查询报表生成器3.0表联接重复的问题

来自分类Dev

实体框架和谓词生成器-谓词在SQL查询中被忽略

来自分类Dev

雄辩的-运行带有绑定的原始sql的查询生成器

来自分类Dev

LIMIT 1在Visual Studio 2012中的SQL查询生成器中不起作用

Related 相关文章

  1. 1

    SQL Server/报表生成器子查询返回多于一行错误

  2. 2

    Laravel 查询生成器中的 SQL 左连接错误

  3. 3

    Sql 查询生成器 - Symfony

  4. 4

    MySQL + SSRS(SQL Server报表生成器)数据集/查询参数不起作用

  5. 5

    Codeigniter中的查询生成器生成正确的SQL语句,但是执行查询会导致错误的结果

  6. 6

    Gii模型生成器错误-表不存在-Yii框架和SQL Server 2000

  7. 7

    SQL Server 报表生成器 - TransactionDate 值错误地显示为大于 endDate 值

  8. 8

    从Phalcon查询生成器获取原始SQL

  9. 9

    Laravel 5查询生成器中存在SQL

  10. 10

    Laravel 4查询生成器SQL语句

  11. 11

    Laravel查询生成器-从传统SQL迁移

  12. 12

    将此sql语句转换为ORM或查询生成器

  13. 13

    转换原始SQL以使用口才查询生成器

  14. 14

    主义查询生成器:SQL数组中的值

  15. 15

    Sql 查询生成器将数据转换为字符

  16. 16

    SQL 查询生成器 - 分组和排序 (Laravel)

  17. 17

    查询在查询设计器中有效,但在MS SQL Server报表生成器中无效

  18. 18

    SQL Server命令生成器和自动递增ID

  19. 19

    SQL Server报表生成器字段格式

  20. 20

    SQL Server命令生成器和自动递增ID

  21. 21

    在cakephp3中打印ORM查询生成器的SQL查询

  22. 22

    将原始SQL查询更改为Laravel查询生成器对象

  23. 23

    我如何将SQL原始查询重写为Laravel查询生成器

  24. 24

    Yii查询生成器结果(带有联接和子查询的纯SQL)

  25. 25

    如何使用CakePHP查询生成器生成SQL函数调用?

  26. 26

    SQL查询报表生成器3.0表联接重复的问题

  27. 27

    实体框架和谓词生成器-谓词在SQL查询中被忽略

  28. 28

    雄辩的-运行带有绑定的原始sql的查询生成器

  29. 29

    LIMIT 1在Visual Studio 2012中的SQL查询生成器中不起作用

热门标签

归档