[英]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.