簡體   English   中英

SQL子查詢列,其中名稱包含一個值

[英]SQL Subquery Column Where Name Contains a Value

我試圖弄清楚如何編寫某些子查詢。 我不斷收到“子查詢返回的值超過1”的錯誤。 我需要查詢父訂單而不是子訂單的描述。

例:
父訂單:100-01子訂單:100-02、100-03
每個訂單都有說明。 但是在一欄中,我需要對父項的描述:

WHERE [ORDER] LIKE '%-01'

當前代碼如下:

SELECT  NAME as [Job],
        [Master Job Desc] = (SELECT TOP 1 [DESCR] FROM TABLE WHERE [NAME] LIKE '%-01'),
        LEFT(or_order.descr,30) as [Description],
FROM TABLE
ORDER BY OR_ORDER.DELIVERY asc, or_op.STARTSEC asc

有什么建議嗎? 謝謝

編輯:我忘記了,我已經嘗試將TOP 1添加到子查詢中,但它只為整個列返回相同的值。 我不想要那個,我想找到父工作訂單。

EDIT2:這是我要尋找的單獨的SQL。

SELECT [DESCR] FROM [Or_Order] WHERE [NAME] LIKE '%-01'

上面的語句返回說明,其中名稱包含父作業號(-01)。 我需要在單列中。

您可以使用charindex()獲取訂單的父部分(最多連字符)並將其與'01'串聯在一起。 這樣,您可以連接到同一表以獲取父訂單描述。

select
      Job = c.Name
    , [Master Job Desc] = p.Descr
    , [Description] = left(c.descr,30) 
  from or_order as c
    left join or_order as p 
      on left(c.[order],charindex('-',c.[Order]))+'01' = p.[Order]
  order by delivery asc, or_op.startsec asc

右旋糖: http: //rextester.com/GSN90790

create table or_order (
    [order] varchar(32)
  , Name varchar(32)
  , Descr varchar(32)
);

insert into or_order values 
    ('100-01','Name 1','Descr 1')
  , ('100-02','Name 2','Descr 2')
  , ('100-03','Name 3','Descr 3');

select
    Job = c.Name
  , [Master Job Desc] = p.Descr
  , [Description] = left(c.descr,30) 
  from or_order as c
    left join or_order as p 
      on left(c.[order],charindex('-',c.[Order]))+'01' = p.[Order]

結果:

+--------+-----------------+-------------+
|  Job   | Master Job Desc | Description |
+--------+-----------------+-------------+
| Name 1 | Descr 1         | Descr 1     |
| Name 2 | Descr 1         | Descr 2     |
| Name 3 | Descr 1         | Descr 3     |
+--------+-----------------+-------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM