<bdo id='EEZJg'></bdo><ul id='EEZJg'></ul>
  • <legend id='EEZJg'><style id='EEZJg'><dir id='EEZJg'><q id='EEZJg'></q></dir></style></legend>
    1. <small id='EEZJg'></small><noframes id='EEZJg'>

      1. <tfoot id='EEZJg'></tfoot>
        <i id='EEZJg'><tr id='EEZJg'><dt id='EEZJg'><q id='EEZJg'><span id='EEZJg'><b id='EEZJg'><form id='EEZJg'><ins id='EEZJg'></ins><ul id='EEZJg'></ul><sub id='EEZJg'></sub></form><legend id='EEZJg'></legend><bdo id='EEZJg'><pre id='EEZJg'><center id='EEZJg'></center></pre></bdo></b><th id='EEZJg'></th></span></q></dt></tr></i><div id='EEZJg'><tfoot id='EEZJg'></tfoot><dl id='EEZJg'><fieldset id='EEZJg'></fieldset></dl></div>

        在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法

        Best way to do nested case statement logic in SQL Server(在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法)
        1. <legend id='z5Cge'><style id='z5Cge'><dir id='z5Cge'><q id='z5Cge'></q></dir></style></legend>

        2. <tfoot id='z5Cge'></tfoot>
          • <small id='z5Cge'></small><noframes id='z5Cge'>

                <i id='z5Cge'><tr id='z5Cge'><dt id='z5Cge'><q id='z5Cge'><span id='z5Cge'><b id='z5Cge'><form id='z5Cge'><ins id='z5Cge'></ins><ul id='z5Cge'></ul><sub id='z5Cge'></sub></form><legend id='z5Cge'></legend><bdo id='z5Cge'><pre id='z5Cge'><center id='z5Cge'></center></pre></bdo></b><th id='z5Cge'></th></span></q></dt></tr></i><div id='z5Cge'><tfoot id='z5Cge'></tfoot><dl id='z5Cge'><fieldset id='z5Cge'></fieldset></dl></div>
                  <tbody id='z5Cge'></tbody>
                  <bdo id='z5Cge'></bdo><ul id='z5Cge'></ul>
                  本文介绍了在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在编写一个 SQL 查询,其中返回的一些列需要根据相当多的条件进行计算.

                  我目前正在使用嵌套的 case 语句,但它变得很混乱.有没有更好(更有条理和/或可读性更强)的方法?

                  (我使用的是 Microsoft SQL Server,2005)

                  <小时>

                  一个简化的例子:

                  SELECT列1,col2,col3,案件WHEN 条件然后案件当条件 1然后案件当条件 2然后计算1ELSE计算2结尾别的案件当条件 2然后计算3ELSE计算4结尾结尾别的案件当条件 1然后案件当条件 2然后计算5ELSE计算6结尾别的案件当条件 2然后计算7ELSE计算8结尾结尾END AS 'calculatedcol1',第 4 行,col5 -- 等等发件人表

                  解决方案

                  你可以尝试一些 COALESCE 技巧,例如:

                  <前>选择合并(CASE WHEN 条件 1 THEN 计算 1 ELSE NULL END,CASE WHEN 条件 2 THEN 计算 2 ELSE NULL END,等等...)

                  I'm writing an SQL Query, where a few of the columns returned need to be calculated depending on quite a lot of conditions.

                  I'm currently using nested case statements, but its getting messy. Is there a better (more organised and/or readable) way?

                  (I am using Microsoft SQL Server, 2005)


                  A simplified example:

                  SELECT
                      col1,
                      col2,
                      col3,
                      CASE
                          WHEN condition 
                          THEN
                              CASE
                                  WHEN condition1 
                                  THEN
                                      CASE 
                                          WHEN condition2
                                          THEN calculation1
                                          ELSE calculation2
                                      END
                                  ELSE
                                      CASE 
                                          WHEN condition2
                                          THEN calculation3
                                          ELSE calculation4
                                      END
                              END
                          ELSE 
                              CASE 
                                  WHEN condition1 
                                  THEN 
                                      CASE
                                          WHEN condition2 
                                          THEN calculation5
                                          ELSE calculation6
                                      END
                                  ELSE
                                      CASE
                                          WHEN condition2 
                                          THEN calculation7
                                          ELSE calculation8
                                      END
                              END            
                      END AS 'calculatedcol1',
                      col4,
                      col5 -- etc
                  FROM table
                  

                  解决方案

                  You could try some sort of COALESCE trick, eg:

                  SELECT COALESCE(
                    CASE WHEN condition1 THEN calculation1 ELSE NULL END,
                    CASE WHEN condition2 THEN calculation2 ELSE NULL END,
                    etc...
                  )
                  

                  这篇关于在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Building a comma separated list?(建立一个逗号分隔的列表?)
                  Errors in SQL Server while importing CSV file despite varchar(MAX) being used for each column(尽管每列都使用了 varchar(MAX),但在导入 CSV 文件时 SQL Server 中出现错误)
                  How can I import an Excel file into SQL Server?(如何将 Excel 文件导入 SQL Server?)
                  Export table to file with column headers (column names) using the bcp utility and SQL Server 2008(使用 bcp 实用程序和 SQL Server 2008 将表导出到带有列标题(列名称)的文件)
                  Concat field value to string in SQL Server(将字段值连接到 SQL Server 中的字符串)
                  SQL Server Bulk insert of CSV file with inconsistent quotes(SQL Server 批量插入带有不一致引号的 CSV 文件)

                    <small id='jYElS'></small><noframes id='jYElS'>

                          <tbody id='jYElS'></tbody>
                        • <bdo id='jYElS'></bdo><ul id='jYElS'></ul>
                          <i id='jYElS'><tr id='jYElS'><dt id='jYElS'><q id='jYElS'><span id='jYElS'><b id='jYElS'><form id='jYElS'><ins id='jYElS'></ins><ul id='jYElS'></ul><sub id='jYElS'></sub></form><legend id='jYElS'></legend><bdo id='jYElS'><pre id='jYElS'><center id='jYElS'></center></pre></bdo></b><th id='jYElS'></th></span></q></dt></tr></i><div id='jYElS'><tfoot id='jYElS'></tfoot><dl id='jYElS'><fieldset id='jYElS'></fieldset></dl></div>

                          <legend id='jYElS'><style id='jYElS'><dir id='jYElS'><q id='jYElS'></q></dir></style></legend>
                            <tfoot id='jYElS'></tfoot>