今日、6時間以上を費やして、このSQLソリューションを無駄にしないようにしました。正直なところ、私はPIVOT命令を使用しなければならないということをいくつかの検索の後に分かりました(私はそれを前に見たことがありませんでした)、その後私はこのコマンドを結合コマンドで使用すると分かります。私はそれほどスマートではありません。ジョインとピボットを使用したSQL
これは - 私がやろうとするものである:
私はこれらのテーブル( - 私は、私はいくつかの他のINNERが他のテーブルを参照するがJOINSので、この質問のために関連していると考えているものを示す)を持っている:
そして、このクエリ:これを返す
SELECT [Easytool_data].[dbo].[estoque].[id] AS ID
,[Easytool_data].[dbo].[estoque].[barras] AS PartNumber
,[Easytool_data].[dbo].[estoque].[codigo] AS Codigo
,[Easytool_data].[dbo].[estoque].[descricao] AS Descricao
,[Easytool_data].[dbo].[estoque].[um] AS Unidade
,[Easytool_data].[dbo].[familias].[Descricao] AS Familia
,[Easytool_data].[dbo].[estoque].[fabricante] AS Fabricante
,[Easytool_data].[dbo].[estoque].[modelo] AS Modelo
,[Easytool_data].[dbo].[estoque].[armazenagem] AS Local
,[Easytool_data].[dbo].[status].[Descricao] AS Situacao
,[Easytool_data].[dbo].[estoque].[custo] AS Preco
,[Easytool_data].[dbo].[estoque].[sd_atual] AS Saldo
,[Easytool_data].[dbo].[local_estoque].[descricao] AS Estoque
,[Easytool_data].[dbo].[local_estocado].[quantidade] AS Quantidade
FROM [Easytool_data].[dbo].[estoque]
INNER JOIN [Easytool_data].[dbo].[familias]
ON [Easytool_data].[dbo].[estoque].[id_familia] = [Easytool_data].[dbo].[familias].[Id]
INNER JOIN [Easytool_data].[dbo].[status]
ON [Easytool_data].[dbo].[estoque].[id_status] = [Easytool_data].[dbo].[status].[Id]
INNER JOIN [Easytool_data].[dbo].[local_estocado]
ON [Easytool_data].[dbo].[estoque].[id] = [Easytool_data].[dbo].[local_estocado].[id_estoque]
INNER JOIN [Easytool_data].[dbo].[local_estoque]
ON [Easytool_data].[dbo].[local_estocado].[id_local_estoque] = [Easytool_data].[dbo].[local_estoque].[id]
WHERE [Easytool_data].[dbo].[estoque].[id] = 3954
:
ID | PartNumber | Codigo | Descricao | Unidade | Familia | Fabricante | Modelo | Local | Situacao | Preco | Saldo | Estoque | Quantidade
----------------------------------------------------------------------------------------------------------------------------------------------------
3954 | OSPÇ0024 | OSPÇ0024 | PINÇA ER 25 | UNIDADE | PINÇA | SANDVIK | NULL | PI 01-D-2 | ATIVO | 25 | 2 | CENTRAL | 1
----------------------------------------------------------------------------------------------------------------------------------------------------
3954 | OSPÇ0024 | OSPÇ0024 | PINÇA ER 25 | UNIDADE | PINÇA | SANDVIK | NULL | PI 01-D-2 | ATIVO | 25 | 2 | ROTATIVO 0 | 0
----------------------------------------------------------------------------------------------------------------------------------------------------
3954 | OSPÇ0024 | OSPÇ0024 | PINÇA ER 25 | UNIDADE | PINÇA | SANDVIK | NULL | PI 01-D-2 | ATIVO | 25 | 2 | REFORMA 0 | 0
----------------------------------------------------------------------------------------------------------------------------------------------------
3954 | OSPÇ0024 | OSPÇ0024 | PINÇA ER 25 | UNIDADE | PINÇA | SANDVIK | NULL | PI 01-D-2 | ATIVO | 25 | 2 | EMPRÉSTIMO | 1
私はそれがこれを返すようにしたい:
ID | PartNumber | Codigo | Descricao | Unidade | Familia | Fabricante | Modelo | Local | Situacao | Preco | Saldo | Estoque | Quantidade | Estoque | Quantidade | Estoque | Quantidade | Estoque | Quantidade
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3954 |OSPÇ0024 | OSPÇ0024 | PINÇA ER 25 | UNIDADE | PINÇA | SANDVIK | NULL | PI 01-D-2 | ATIVO | 25 | 2 | CENTRAL | 1 | ROTATIVO 0 | 0 | REFORMA 0 | 0 | EMPRÉSTIMO | 1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
I'veは非常に最近、学びましたこれを達成するためにPIVOTを使用することができますが、私は完全に失われています私の質問のようないくつかのINNER JOINコマンドでそれを使用してください。私はいくつかの異なる方法でそれを試して、常にエラーが発生します。
私のようなクエリを使用した後、私がどのように達成できるかについての例を誰にでも教えてもらえますか?
私はボードを検索しましたが、私が見つけたすべての例は、私のクエリと比較するにはあまりにも複雑すぎたり単純な方法でした。私は怠惰ではなく、私はこれを学ぶために私の最善の努力を尽くしても構わないが、今のところ手の届かないところにいるようだ。
誰かがI'dが
が、私は最初のサブクエリが唯一の各[Easytool_data].[dbo].[estoque].[id]
で1行を返すと仮定し、そうでない場合は、あなたがすべてのBY GRUPしなければならないあなたに ダニエル
PIVOTは、集計値 – McNets
のために使用されています。この[Easytool_data]。[dbo]。[estoque] esto'は '[Easytool_data]。[dbo]。[estoque]。[id] AS ID'を' esto 'に変更することができます。id AS ID' – Edward