以下のクエリの各行は1つの一意の行を返します。 フィールドを2つ追加すると、job
フィールドとsuffix
フィールドには、item
という数値が重複して表示されます(これは予想されます)。同じ行内の2行のフィールドを返すにはどうすればよいですか?
実際にjob
とsuffix
の行情報を返すが、すべて1つのフィールドと1つの行をカンマで区切って返す。 See this link for a description of what I want to do。私はテーブルに書き込む能力がないので、この例を使用することはできません。これでクエリ/レポート/サブレポートのみを作成できます。これどうやってするの?
SELECT c.item,
c.qty_ordered AS qty_expected,
Sum(j.qty_released) AS sum_qty_released,
Sum(j.qty_complete) AS sum_qty_complete,
(Sum(j.qty_complete) - c.qty_ordered) AS expected_variance,
(Sum(j.qty_complete) - Sum(j.qty_released)) AS regular_variance,
j.whse
FROM coitem AS c
LEFT OUTER JOIN job AS j
ON c.item = j.item
AND Dateadd(d, -6, c.due_date) = j.job_date
WHERE j.job_date = @jobdate
AND j.item IN (SELECT j.item AS current_item
FROM job AS j
WHERE j.job_date = @jobdate
AND j.item NOT LIKE 'Indirect'
AND j.job NOT LIKE 'C%')
GROUP BY c.item,
c.qty_ordered,
j.whse
ORDER BY j.whse,
c.item
更新:
私はこれを解決するためにFOR XML Path
を使用しようとしましたが、私はそれが仕事を得ることができません。私はこのエラーを取得する:
Incorrect syntax near the keyword 'FOR'. Incorrect syntax near the keyword 'GROUP'.
本のトリッキーな部分が一列に返さ私が欲しい情報が接尾仕事とであるということです。ですから、私はこれらの2つのフィールドを連結してから、1つのフィールドに集計する必要があります。しかし、集計がより難しいと思ったので、それから始めてください。したがって、私の試みは集約部分にのみ焦点を合わせます。あなたがLISTAGG()を使用できるOracleでは
DECLARE @jobdate datetime = '5/30/2016'
SELECT
c.item,
c.qty_ordered AS qty_expected,
j1.job,
j1.suffix,
Sum(j1.qty_released) AS sum_qty_released,
Sum(j1.qty_complete) AS sum_qty_complete,
(Sum(j1.qty_complete)-c.qty_ordered) AS expected_variance,
(Sum(j1.qty_complete)-Sum(j1.qty_released)) AS regular_variance,
j1.whse
STUFF(
SELECT DISTINCT '' + j2.job
FROM job AS j2
WHERE j1.job = j2.job AND j1.suffix = j2.suffix
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
,1,0,'') data
FROM
coitem AS c
LEFT OUTER JOIN job AS j1 ON c.item = j1.item AND DATEADD(d, -6, c.due_date) = j1.job_date
WHERE
j1.job_date = @jobdate AND
j1.item IN
(SELECT
j.item AS current_item
FROM
job AS j
WHERE
j.job_date = @jobdate AND
j.item NOT LIKE 'Indirect' AND
j.job NOT LIKE 'C%'
)
GROUP BY
c.item,
c.qty_ordered,
j1.whse,
j1.job,
j1.suffix
ORDER BY
j1.whse,
c.item
'CONCAT()'は機能しませんか? – scsimon
@scsimon何を連結するのですか?私がまとめたい2つの値は異なる行にあります。私は 'job'と' suffix'を連結することができました。それは簡単です。しかし実際の目標は、複数の行の値を1つの行にまとめることです。 – whatwhatwhat
ごめんなさい。 '#temp'テーブルを使用できますか? – scsimon