【问题标题】:SQL query to extract the part of matching SQL stringSQL查询提取匹配的SQL字符串部分
【发布时间】:2021-09-29 10:14:55
【问题描述】:

让我们考虑一个CLASSBILL 表。

CLASS表:

Class Description
F Factory
H Headoffice
C001 Electrical
C002 Mechanical
C003 Civil

BILL表:

BILL_NO DOCCLASS
1 FC001
2 FC002
3 FC003

说明:Class 是主键。假设我们通过标记 CLASS 表中的不同类来创建发票。

例如,发票 1 是通过标记 FCOO1(即工厂和电气)创建的

问题:如何编写 SQL 查询以仅从 Invoice 1 的 FC001 获取 COO1 部分?

此 SQL 代码不起作用:

Select
    BILLDET.BILL_NO,
    BILLDET.CLASS,
    BILLDET.GLCODE,
    CLASS.DESCRIPT
From
    BILLDET 
Full Join 
    CLASS On BILLDET.CLASS = CLASS.CLASS

输出:

Bill NO DESCRIPT
1 FactoryElectrical

谢谢

【问题讨论】:

  • 这是一张设计糟糕的表格:每列存储一个信息

标签: sql sql-server-2008


【解决方案1】:

呃,这是一种存储数据的方式

WITH classx AS(
  SELECT
    c.class+n.class as class,
    c.descript+n.descript as descript 
  FROM
    class c 
    JOIN class n 
    ON 
      c.class LIKE 'c%' AND 
      n.class NOT LIKE 'c%'
)

SELECT * FROM bill JOIN classx ON bill.docclass = classx.class

【讨论】:

    【解决方案2】:
    select bill_no, Description
    from
    (
    select c2.class + c1.class as keys, c2.description+c1.description as Description
    from class c1, class c2
    where c1.class LIKE 'c%' AND 
          c2.class NOT LIKE 'c%'
    )as tab, bill
    where keys = DOCCLASS;
    

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2012-12-26
      • 2015-10-30
      相关资源
      最近更新 更多